2017-07-11 10 views
0

私はいくつかのMovieClipsを作成し、ステージ上でそれらのすべてを置きます。私はランダムにMovieClipを移動しようとしていますが、それを一度だけ使用していますが、同時に他のトゥイーンエフェクトと競合するため、どちらが正しいかを知る必要があります。それを行う簡単な方法はありますか?ループのない無作為なムービークリップ?

var biryukseklev1, ikiyukseklev1, ucyukseklev1, dortyukseklev1, besyukseklev1:int; 
var assignavalue1, assignavalue2:int; 

stage.addEventListener(Event.ENTER_FRAME,survivordondurlev6); 
function survivordondurlev6(e:Event) { 
    if (biryerlessurlev1 == 0) { 
     biryukseklev1 = 764;//36 
    } else if (biryerlessurlev1 == 1) { 
     biryukseklev1 = 680;//120 
    } else if (biryerlessurlev1 == 2) { 
     biryukseklev1 = 596;//204 
    } else if (biryerlessurlev1 == 3) { 
     biryukseklev1 = 512;//288 
    } else if (biryerlessurlev1 == 4) { 
     biryukseklev1 = 428;//372 
    } 

    if (assignavalue1 == 0 && rabbitstatus.text.length < 2) { //Make sure to not used before 
     var my:Tween = new Tween(rabbit, "y", Back.easeInOut, rabbit.y, rabbit.y -biryukseklev1, 3, true); 
     rabbitstatus.text = "okfull"; 
    } else if((assignavalue1 == 1 && birdstatus.text.length < 2){ //Make sure to not used before 
     var mys:Tween = new Tween(bird, "y", Back.easeInOut, bird.y, bird.y -biryukseklev1, 3, true); 
     birdstatus.text = "okfull"; 
    } 
} 
+0

私は本当にあなたが達成しようとしているものを理解していませんよ。 – BadFeelingAboutThis

+0

1-まず5ランダムムービークリップを割り当てます。(すでにステージ上で30個のムービークリップ)トゥイーンの 2-SET Y(biryerlessurlev1) 3-Iは、ムービークリップの前に使用しないように確認することのために、このコードを使用します。 (birdstatus.text.length <2) 4-Tweenエフェクトのムービークリップ。 ??私は(VARのMYSを設定する方法 :トゥイーン=新しいトゥイーン(RANDOMovieClip)と使用/前だから、 – KucuKeko

+0

割り当てチェックする簡単な方法がありますが、あなたは30のムービークリップのプールを持っているあなたは、ランダムにそれらの5をアニメーション化します、その後、(前と同様のものではなく)それらの多くをアニメーション?何かを待つ? – BadFeelingAboutThis

答えて

0

あなたがアニメーションを済ませたクリップを追跡する場合は、あなたがそれらを反復処理のいくつかの方法を持っている必要があります。ここでは

は、私が試したものです。最も簡単なリストはArrayですが、どのようにそれらを「アニメーション」としてマークするかはあなた次第です。もう一度アニメーションを作成する予定がない場合は、アニメーション化したものを単に削除し、後で残しておきます。以下は

は、新しいシーンで実行することができるはずのコード例、です。小さな編集を加えて、それをあなたのニーズに適用できるはずです。

import fl.transitions.Tween; 
import fl.transitions.easing.*; 

// We'll keep track of which blocks still need to be animated by including them in this list 
// Once we animate a block, we remove it from the list. 
var pool:Array = []; 

// Populate the stage with blocks. 
for (var i:int = 0; i < 30; i++) { 
    var block:Sprite = createBlock(); 
    addChild(block);  
    block.y = 50; 
    if (i > 0) { block.x = block.width * i; } 
    pool.push(block); 
} 

// Create an interactive button. 
var txt:TextField = new TextField(); 
txt.text = "Do something"; 
addChild(txt); 
txt.addEventListener("click", animateNext); 

function createBlock():Sprite { 
    // Creates a single, randomly colored block. 
    var block:Sprite = new Sprite(); 
    block.graphics.beginFill(random(0x000000, 0xFFFFFF)); 
    block.graphics.drawRect(0,0,16,16); 
    block.graphics.endFill(); 
    return block; 
} 

function random(low:Number, high:Number):Number { 
    // Returns a random number between the low and high numbers. 
    return Math.floor(Math.random() * (1+high-low)) + low; 
} 

function animateNext(e:Event):void { 
    // Do this 5 times. 
    for (var i:int = 0; i < 5; i++) { 
     // As long as we have blocks in the pool... 
     if (pool.length > 0) { 
      // Pick a random block from the pool 
      var index:int = random(0, pool.length-1); 

      // Animate it 
      new Tween(pool[index], "y", Back.easeInOut, pool[index].y, pool[index].y + 50, 3, true); 

      // Remove it from the pool so it isn't picked again 
      pool.splice(index, 1); 
     } else { 
      // Otherwise, break the loop. 
      break; 
     } 
    } 
} 
関連する問題