2

配列があるとしましょう。配列内の各項目には、対応するライブラリ項目があります。

私は次のようなことをしたいと思います:

var rando = Math.round(Math.random()*3)
var myArray = new Array ["ball", "wall", "fall"]
var i:myArray[rando] = myArray[rando] new myArray[rando]()
addChild(i)

しかし、これはうまくいきません。秘密は何ですか?

ありがとうございました、

ヴィクトル・ユーゴー

4

6 に答える 6

1

わかりましたので、これにはたくさんの問題があります。

大きなものvar i:myArray[rando] = myArray[rando] new myArray[rando]()は、ここで何をしようとしているのかわからないということです。

とにかく、ball、wall、fall は、ライブラリにある MovieClip のインスタンス名であると仮定します。私はあなたがこのようなものを欲しがるだろうと思う

 var rando:int = Math.floor(Math.random()*3); //As the comments point out this should give you a random 
//int between 0 and 2, arrays are 0 indexed so this is what we want if we have 3 items

あなたの配列のために、あなたは現在そこに文字列を入れています。フラッシュは、「ボール」などが何であるかわかりません。

このようなことを試してください

var myArray:Array = new Array [new ball(), new wall(), new fall()]; //this creates a new instance of your library object and stores it in your array

次のいずれかをステージに追加します。

addChild(myArray[rando]); //this uses the random number to pull one of the items out of your array

あなたがやろうとしていることvar i:myArray[rando]は、本当に意味がありません。myArray[rando] のタイプはありません。このスロットは MovieClip を保持する必要があります。

于 2012-05-02T00:05:20.513 に答える
0

選択肢が少ない場合は、スイッチ ケースを使用する方が簡単です。

switch (rando) {
   case 0:
       i = new ball();
       break;
   case 1:
       i = new wall();
       break;
   case 2:
       i = new fall();
       break;
}
addChild(i);

i変数を として定義することをお勧めしますMovieClip。この場合、ボール、壁、落下の両方としてインスタンス化できます。

ボール、壁、落下が actionscript にエクスポートされたライブラリにあるとします。

于 2012-05-02T00:02:28.927 に答える
0

限られた情報から推測するだけですが、これを試してみてください。

private function myFunction():void{
    var rando = Math.round(Math.random()*3);
    var myArray= new Array ["ball", "wall", "fall"];

}
private function generateItem(item:String):void{
    switch(item){
        case "ball" : generateBall(); break;
        case "wall" : generateWall(); break;
        case "fall" : generateFall(); break;
}

private function generateBall():void{
//code to generate ball
addChild(ball);
}

private function generateFall():void{
//code to generate fall
addChild(fall);
}

private function generateWall():void{
//code to generate wall
addChild(wall);
}
于 2012-05-02T00:06:47.320 に答える
-1

Marty Wallaceは、getDefinitionByName()の道を私を導いてくれたことで大きな賞賛を得ています。彼が投稿した例は良かったのですが、この例は私が望んでいたことを正確に実行します。

http://www.emanueleferonato.com/2011/03/31/understanding-as3-getdefinitionbyname-for-all-eval-maniacs/

于 2012-05-03T04:35:19.987 に答える