2012-03-19 24 views
0

私のステージには、mc1、mc2、mc3の3つのムービークリップがあります。ムービークリップをランダムに呼び出すにはどうすればよいですか?

それぞれは現在α= 0です。

私もステージ上にボタンがあり、それをクリックすると、ムービークリップの1つがアルファ= 1に変更されます。ここ

は私のスクリプトです:ここでは

var mcArray:Array = [mc1,mc2,mc3]; 
for (var j:int = 0; j < hotSpot.length; j++) 
{ 
    mcArray[j].alpha=0; 
} 

revealBtn.buttonMode = true; 
    revealBtn.useHandCursor = false; 
    revealBtn.addEventListener(MouseEvent.CLICK, revealClick); 
function revealClick(event:MouseEvent):void 
{ 
//what i need to write here? 
} 
+0

-1あなたはそれについて考えましたか?何か試した?それとも、StackOverflowの優れた人々があなたのためにすべてをやりたいのですか?簡単なプログラムフローロジックを書くことさえ、あなたに手がかりを与えてしまったでしょう。一例があります。 0と2の間の乱数を生成する(それを 'i'と呼ぶ) - > mcArrayのi番目の要素を選択する - >その要素のアルファを1に変更する。 –

+0

@PranavHosangadi私はそれが質問をdownvoteする理由であるとは思わない。あなたのダウンボートをキャンセルするには+1するつもりです。 – Taurayi

+0

@ Taurayi:これは私を怒らせるものです: "//ここに書く必要がありますか?"まずは試してみる必要があります。あなたの側から何の努力もせずに書くべきコードを他の人が教えてくれると期待している場所ではありません。 –

答えて

0

を返します_sprites.length - 1random()方法のmax引数の値を置き換えることができ、ここであなたが段階的にどうなるのかです:

あなたが他のすべてのムービークリップを非表示にする場合
//Generate random number (integer) between 0 and mcArray.length 
var i:Number=Math.floor(Math.random() * mcArray.length); 

//Select ith element of mcArray 
var movieClipToEdit:MovieClip=mcArray[i] as MovieClip; 

//Change its alpha to 1 
movieClipToEdit.alpha=1; 

、これを追加します。

for (var j:int = 0; j < mcArray.length; j++) { 
    mcArray[j].alpha=0; 
} 
0

は、ステージをクリックした後にランダム表示オブジェクトを表示する方法を示す例です:

Main.as(ドキュメントクラス)

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 

    public class Main extends Sprite 
    { 
     private var _sprites:Vector.<Sprite>; 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 

     }// end function 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 

      _sprites = new Vector.<Sprite>(); 

      for (var i:int = 0; i < 3; i++) 
      { 
       var sprite:Sprite = new Sprite(); 
       sprite.graphics.beginFill(0xFF0000); 
       sprite.graphics.drawRect(0, 0, 100, 100); 
       sprite.graphics.endFill(); 
       sprite.x = ((sprite.width + 50) * i); 
       sprite.y = 0; 
       addChild(sprite); 

       _sprites.push(sprite); 

      }// end for 

      hideSprites(); 

      stage.addEventListener(MouseEvent.CLICK, onClick); 

     }// end function 

     private function onClick(e:MouseEvent):void 
     { 
      showSprite(); 

     }// end function 

     private function showSprite():void 
     { 
      hideSprites(); 

      (_sprites[random(0, 2)] as Sprite).alpha = 1; 

     }// end function 

     private function hideSprites():void 
     { 
      for each(var sprite:Sprite in _sprites) 
      { 
       sprite.alpha = 0; 

      }// end for each 

     }// end function 

     private function random(min:int, max:int):int 
     { 
      return (Math.floor(Math.random() * (1 + max - min)) +min); 

     }// end function 

    }// end class 

}// end package 

簡単に言えば、Math.round()を使用して、ここでは表示オブジェクト配列のランダムインデックスを取得します。

(_sprites[random(0, 2)] as Sprite).alpha = 1; 

private function random(min:int, max:int):int 
{ 
    return (Math.floor(Math.random() * (1 + max - min)) +min); 

}// end function 

あなたはまた、また、質問に私のコメントを拡張2.

+0

申し訳ありませんが、私はまだクラスに精通していない、以下の答えは今私のコードに適しています.BTW、助けてくれてありがとう、私はあなたのコードが他の人に役立つことを願っ:) – pizza0502

関連する問題