こんにちは、私はこの状況に近づく最善の方法を苦労しています。フレーム番号をループするにはどうすればいいのですが、trueの場合はそのフレーム番号を無視しますか?
私はovenScreen.mcChar
ムービークリップに5つのフレームがあります。それぞれは、プレーヤーがロックを解除できる文字です。プレイヤーが十分なコインを持っている場合、彼らは賞金画面に行くことができ、ランダムにロック解除可能なキャラクターを得ることができます。ここで
それは、これまでの設定がどのようにある:
private function getPrizeHandler(e:MouseEvent):void
{
//Check if prize is locked or unlocked then unlock item/ loop through random number frames
frameLoop = randomNumber(1, 5);
ovenScreen.mcChar.gotoAndStop(frameLoop);
if (frameLoop == 1 && !sharedObjectCharacters.data.sharedHotDog)
{
sharedHotDog = true;
sharedObjectCharacters.data.sharedHotDog = sharedHotDog;
sharedObjectCharacters.flush();
}else
if (frameLoop == 2 && !sharedObjectCharacters.data.sharedTaco)
{
sharedTaco = true;
sharedObjectCharacters.data.sharedTaco = sharedTaco;
sharedObjectCharacters.flush();
}else
if (frameLoop == 3 && !sharedObjectCharacters.data.sharedDonut)
{
sharedDonut = true;
sharedObjectCharacters.data.sharedDonut = sharedDonut;
sharedObjectCharacters.flush();
}else
if (frameLoop == 4 && !sharedObjectCharacters.data.sharedCoffee)
{
sharedCoffee = true;
sharedObjectCharacters.data.sharedCoffee = sharedCoffee;
sharedObjectCharacters.flush();
}else
if (frameLoop == 5 && !sharedObjectCharacters.data.sharedPancakes)
{
sharedPancakes = true;
sharedObjectCharacters.data.sharedPancakes = sharedPancakes;
sharedObjectCharacters.flush();
}
////////////////////////////////////////
ovenScreen.gotoAndPlay(2); //play animations
TweenLite.delayedCall(3.5, prizeConfettie);
ovenScreen.removeEventListener(MouseEvent.CLICK, getPrizeHandler);
}
あなたは私が1から乱数であるVAR frameLoop
を持って見ることができるように - 5。だから、ロック解除の文字はランダムでランダムに表示されますロックされていない文字。 if文を使用して、乱数が特定のフレームにあるかどうかを確認します。ロックされていない場合はロックを解除し、データを保存します。
これですべて正常に動作しますが、アイテムが既に別のフレーム番号でソートされていない場合は、どうすれば修正できますか?したがって、frameLoopが2になり、その文字がすでにロックされている場合は、ロックされた文字になるまでランダムなフレーム番号を繰り返します。私は数の配列を設定することを考えていたかもしれませんが、そのアプローチは論理的なものかもしれませんが、どうやってそのようにするかについてはわからないかもしれません。
ご協力いただきありがとうございます。
共有オブジェクトブールに関する追加情報:
private function allSharedObjectBooleans():void
{
sharedObjectCharacters = SharedObject.getLocal("Characters");
sharedHotDog = sharedObjectCharacters.data.sharedHotDog != null ? sharedObjectCharacters.data.sharedHotDog : false;
sharedTaco = sharedObjectCharacters.data.sharedTaco != null ? sharedObjectCharacters.data.sharedTaco : false;
sharedDonut = sharedObjectCharacters.data.sharedDonut != null ? sharedObjectCharacters.data.sharedDonut : false;
sharedCoffee = sharedObjectCharacters.data.sharedCoffee != null ? sharedObjectCharacters.data.sharedCoffee : false;
sharedPancakes = sharedObjectCharacters.data.sharedPancakes != null ? sharedObjectCharacters.data.sharedPancakes : false;
}
と私はそうのようにそれらを作成します。
//shared Booleans
private var sharedHotDog:Boolean;
private var sharedTaco:Boolean;
private var sharedDonut:Boolean;
private var sharedCoffee:Boolean;
private var sharedPancakes:Boolean;
こんにちはベスパーは、これと説明のために大変ありがとうございます。私はそれを今遊んで、私がそれを働かせることができるかどうか見ていきます。あなたが知っていれば私は問題に遭遇すればそれは大丈夫です。ありがとう。 1つの質問strUnlockables:Arrayは私のsharedObjectブーリアンを正しい位置に保持していますか? – Nathan
私が抱えている問題は、if文が決して考慮されていない/ if文の中にトレースを追加しても呼び出されないということです。何が問題なのかわからないsharedHotDog、sharedTacoなどはすべて私がfalseに設定したブール値です。何が起こっているのでしょうか? – Nathan
'strUnlockables'は共有オブジェクト内のブール値の文字列、*名前*だけを保持します。あなたがどこでもそれらの文字列を書くことに間違いをしなかったかどうか確認してください。 2つ目の理由として、 'sharedObjectCharacters'はこのコードではアクセスできません。 if文の直前で 'trace(f、strUnlockables [f]、sharedObjectCharacters.data [strUnlockables [f]])'を実行して、反復処理中にすべてのデータが表示されているかどうかを確認してください。 – Vesper