Flash CS3 Proを使用して、基本的なActionScript 3で簡単に遊んでいます。ActionScript 3 MovieClipクラスのリンケージ
は、I nは「brander」のシンボルを複製するキーフレームに、この非常に簡単なコードを置く:
for (var i:Number=0; i<20; i++) {
var m = new brander("MS_"+i);
addChild(m);
m.name = "MS_"+i;
m.x = 20*i;
m.alpha = a;
a-=0.05;
m.y = 20;
}
シンボルはbrander.asクラスにリンクされています。
クラスは、このいずれかになります。
package {
import flash.display.*;
public class brander extends MovieClip {
var n:String;
//
public function brander(name) {
setName(name);
}
//
function setName(name) {
this.n = name;
}
//
function getName() {
return n;
}
}
}
、それはあまりにも簡単です。
Now:私はこのクラスでは何も設定できないことに気付きました。だから、setName( "brander"インスタンスの作成時)を呼び出すときに、私は何も設定しません。これは可能ですか?
私は単純に書き込むことで、デバッグなしでテスト:このクラスは、情報を保存することができないとき
btn.addEventListener(MouseEvent.MOUSE_DOWN, test);
//
function test(EVT) {
trace(this.getChildByName("MS_2").getName());
}
は、なぜ我々は、クラスをリンクしていますか?私は間違って何をしていますか?
EDIT:
私はこれが働いているが見つかりました:
function fun(EVT) {
trace((this.getChildByName("M_2") as brander).getName());
}
が、私は理由を理解することはできません:あなたはなぜ私に教えてくださいだろうか?
OOPの点で実際にキャスティングなどが何であるか知っています。経験豊富なAS1とAS2の開発者(ゆっくりとゆっくりとAS3に移行)は、プログラミング関連の問題ではなく、Flashのオーサリングの問題だと思っていました。答える時間をとってくれてありがとう。 –