2012-03-24 9 views
0

Flashでは、インスタンス名がc0〜c399の400個のボタンのグリッドを作成しました。 ActionScriptでは 、私はこのような配列を作成したいと思います:c399までActionscript 3.0:ボタンインスタンス名の配列

var myArray:Array = [c0,c1,c2,c3,c4,c5,c6]; 

すべての方法を。

私はトリックを行うためにforループを書いたが、それは動作していないようです。私はそれを公開すると、エラーが表示されなかっ

import flash.events.MouseEvent; 
//create the array 
var myArray:Array = []; 


for (var i:int=0;i<399;i++){ 
    var cletter:String = 'c'; 
    var p:String = i.toString(); 
    var newvalue:String = cletter + p; 
    var shizzle:Object = new SimpleButton(); 
    myArray[i] = shizzle; 
} 


for each(var btn in myArray){ 
    btn.addEventListener(MouseEvent.CLICK, onBtnClick); 

} 
function onBtnClick(event:MouseEvent):void{ 
cellinfo.gotoAndStop(event.target.name); 
} 

が、私は、ボタンをクリックしたときにも、何も起こりません。 HOwever、私が使用すれば

var myArray:Array = [c0,c1,c2,c3,c4,c5,c6]; 

それは働きます! (最初の7つのボタンは少なくとも)。私は入れても

、:

for (var i:int=1;i<6;i++){ 
    var cletter:String = 'c'; 
    var p:String = i.toString(); 
    var newvalue:Object = cletter + p; 
    myArray[i] = newvalue; 
} 

それは言う:TypeError例外:エラー#1006:値は関数ではありません。 at PVproject1_fla :: MainTimeline/frame1()

私はAS3 + Flashで作業を開始し、解決策を探していました。助けてください!事前に

おかげで、 ロブ

答えて

1

あなたのコードでは、複数の方法で壊れています。

for (var i:int=0;i<399;i++){ 
    var cletter:String = 'c'; 
    var p:String = i.toString(); 
    var newvalue:String = cletter + p; // => this is never used 
    var shizzle:Object = new SimpleButton(); // => this creates a new (!) button 
    myArray[i] = shizzle; 
} 

新しく作成された400個のボタンのそれぞれは、決してステージに追加されないため、見ることはできません。そして、それは皮膚や他の視覚的な特性を持たないので、それが見えてもそれを見ることはできません。

forループ秒、アレイに名前だけを置く - あなたはボタンとして配列の値にアクセスしようとすると、値が実際に文字列であるため、誤差「の値が関数ではありません」原因:

for (var i:int=1;i<6;i++){ 
    var cletter:String = 'c'; 
    var p:String = i.toString(); 
    var newvalue:Object = cletter + p; // <= this is a String! 
    myArray[i] = newvalue; 
} 

手で400個のボタンインスタンスを作成したいかどうかは根本的に疑いがありますが(ActionScriptでこれを行い、この実際の作成を使用して配列を埋めることを考えています)しかし、覚えておいてください:ボタンインスタンスがすでにステージ上にあり、ループがフレームスクリプト内にある場合は覚えておいてください!

for (var i:int=0;i<399;i++){ 
    myArray[i] = this["c"+i]; // no need for all the p and .toString() stuff, btw 
} 
+0

AWESOMEをダウンロードすることができます彼らがステージに追加されるのを見て、例の一つに、その時点で類似し、それらをキャプチャすることです!それは..魔法の「this」だと思います。ありがとう、世界の部屋の海賊。 – Rob360

+0

あなたは大歓迎ですが、それは魔法ではありません;) "ブラケット構文"と呼ばれています:http://www.senocular.com/?entry=241 – weltraumpirat

関連する問題