0

私はActionScript3.0プログラミングを行っていますが、それはよく知っています。ActionScript 2.0を使用したプロジェクトがあり、ステージにインスタンスを追加する際に簡単な問題が発生しました。ActionScript 3.0では、ムービークリップに複数のインスタンスを追加する場合、最初にそれらを配列に保存し、次にその配列を使用してXとY、幅、アルファ、その他の詳細を設定します。

例:

" itemBlock"は、ライブラリにエクスポートされたムービークリップである私のインスタンスです。

for ( var i = 0 ; i < 24 ; i++ ) {
blockBANK[i] = new itemBlock(); // itemBlock is an exported movieclip in the library. 
blockBANK[i].x = // some calculation;
blockBANK[i].y = // some other calculation;
mainPage_mc.addChild(blockBANK[i]); // add to the mainPage_mc  holder
}

これで、この配列を使用して、AS3コードのあらゆる場所にインスタンスを追加および編集できます。AS2では、これらを試しましたが、機能せず、コンパイラエラーもありませ

for (var i=0;i<7;i++) { 
    var temp:MovieClip = new MovieClip();
    temp.attachMovie("itemBlock "," itemBlock "+i,0); 
    textboxBANK[i].addChild(temp);
    textboxBANK[i]._y = 40; 
    textboxBANK[i]._x = i * 20; 
    mainPage_mc.addChild(textboxBANK[i]);// add to holder
}

動作せず、コンパイラエラーはありません

for (var i=0;i<7;i++) { 
    var temp:MovieClip = new MovieClip();
    temp.attachMovie("itemBlock","itemBlock"+i,0); 
    textboxBANK[i].attachMovie(temp);
    textboxBANK[i]._y = 40; 
    textboxBANK[i]._x = i * 20; 
    mainPage_mc.attachMovie(textboxBANK[i]);// add to holder
}

再び動作せず、コンパイラエラーはありません..

インスタンスを配列に入れて、AS2のその配列からホルダーに追加するにはどうすればよいです

4

1 に答える 1

1

私の知る限り、createEmptyMovieClipメソッドを使用してAS2で新しいMovieClipを作成します。また、addChildメソッドはAS2ではサポートされていません。

AS2の表示リストはAS3の表示リストとはかなり異なります。表示オブジェクトは、ステージ上にある場合にのみ存在します(AS3とは異なり、保存されたDisplayObjectを使用して表示ツリーをトラバースできます)。つまり、MovieClipsを配列に格納しようとしていて、後でステージに追加しようとしている場合、それは不可能です。

あなたがする必要があるのは、それらをステージに追加し、それらの*_visible*プロパティを台無しにすることです。その後、それらを後の段階で表示できるようにします。これがあなたがやりたいと思っていることを私が理解していることに基づいたいくつかのコードです...

var tempClips:Array = new Array();

for(var i = 0; i < 10; i++){

    var temp = mainStage.createEmptyMovieClip("temp"+i, mainStage.getNextHighestDepth());

    var temp_inner = temp.attachMovie("exportedLibrarySymbol", "temp_inner", temp.getNextHighestDepth());

    temp._visible = false; //or true if you want them to be seen instantly

    temp._x = someCalculation;
    temp._y = someCalculation;

    tempClips.push(temp);

}

AS2では、ステージに同じ深さで何かを追加しようとすると、元の表示オブジェクトが消えることに注意してください。getNextHighestDepthメソッドを使用して、正しい整数を正確にします。

あなたがやろうとしていることのはるかに良い説明は非常に役に立ちます。

于 2012-05-28T12:33:09.900 に答える