-2

まず、私は初心者です。第二に、私はより良いタイトルを思いつかないので、誰かがタイトルを変更してください.

問題は次のとおりです。

makebtn(0, 150, true, "btnstart");
btntxt(btnstart, "Start");

私は 2 つの関数を作成しました。 one makebtn: makebtn( xpos, ypos, alignMiddle, instance name); number two: btntxt:btntxt( target instance, displayed text);

function makebtn(xpos:Number, ypos:Number, alignMiddle:Boolean, newname:String):void
{
    var button:MovieClip = new btn();
    if(alignMiddle == true){
        xpos = stage.stageWidth / 2 - button.width / 2;
    }
    button.x = xpos;
    button.y = ypos;
    button.name = newname;
    trace("Success adding button - " + button.name);
    stage.addChild(button);
    button.gotoAndStop(4);
    button.useHandCursor = false;
}

function btntxt(button:MovieClip, txt:String):void
{
    button.btnText.text = txt;
    button.buttonMode = true;
    button.useHandCursor = true;
    button.addEventListener(MouseEvent.MOUSE_OVER,overListener);
    button.addEventListener(MouseEvent.MOUSE_OUT,outListener);
    button.addEventListener(MouseEvent.MOUSE_DOWN,clickListener);
    button.addEventListener(MouseEvent.MOUSE_UP,upListener);
}

ボタンを単純なボタンではなく、ムービークリップとして作成しました。

表示される問題は、 への未定義プロパティのアクセスですbtnstart。問題の原因は時間の不足ですか、それとも何ですか? 助けてください!

私の情報が不足している場合は教えてください。リスナーは問題なく機能していると確信しています。

これらをタイムラインで作成しています。

そうですね、btntxt(button, "Start");makebtn 関数の中に入れればうまくいきます。

2番目の編集:

function makebtn(xpos:Number, ypos:Number, alignMiddle:Boolean, newname:String):void
{
var button:MovieClip = new btn();
if(alignMiddle == true){
    xpos = stage.stageWidth / 2 - button.width / 2;
}
button.x = xpos;
button.y = ypos;
button.name = newname;
trace("Success adding button - " + button.name);
stage.addChild(button);
button.gotoAndStop(4);
button.useHandCursor = false;
}

function btntxt(target:String, txt:String):void
{
var button;
button = getChildByName(target);
button.getChildByName("btnText").text = txt;
button.buttonMode = true;
button.useHandCursor = true;
button.addEventListener(MouseEvent.MOUSE_OVER,overListener);
button.addEventListener(MouseEvent.MOUSE_OUT,outListener);
button.addEventListener(MouseEvent.MOUSE_DOWN,clickListener);
button.addEventListener(MouseEvent.MOUSE_UP,upListener);
}
4

3 に答える 3

1

Children を適切に宣言することで解決:

function btntxt(target:String, txt:String):void
{
    var button:MovieClip = MovieClip(stage.getChildByName(target));
    var btnText:TLFTextField = TLFTextField(button.getChildByName("btnText"));
    btnText.text = txt;
    button.buttonMode = true;
    button.useHandCursor = true;
    button.addEventListener(MouseEvent.MOUSE_OVER,overListener);
    button.addEventListener(MouseEvent.MOUSE_OUT,outListener);
    button.addEventListener(MouseEvent.MOUSE_DOWN,clickListener);
    button.addEventListener(MouseEvent.MOUSE_UP,upListener);
}
于 2013-03-31T12:13:17.403 に答える
0

子を作成して名前を割り当てることにより、動的プロパティを作成しようとしています。このようには機能しません。getChildByName()文字列を介して関数を使用して呼び出すかbtntxt("btnstart","Start");、構造を使用しthis[]てメイン クラスの動的な MovieCkip にプロパティを手動で追加することができます。this[newname]=button;

于 2013-03-31T10:42:23.433 に答える
0
var button:MovieClip;
for (var i=1; i<7; i++)
{
button = MovieClip(getChildByName("btn"+i));
button.addEventListener(MouseEvent.CLICK, objClick);
button.addEventListener(MouseEvent.ROLL_OVER, objOver);
button.addEventListener(MouseEvent.ROLL_OUT, objOut);
button.buttonMode = true;
}
于 2014-01-05T13:35:21.827 に答える