-2

首先,我是初学者。其次,请有人更改标题,因为我想不出更好的标题。

这就是问题所在:

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

我做了两个功能,一个makebtnmakebtn( xpos, ypos, alignMiddle, instance name); 第二个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);
}

我把我的按钮做成了一个movieclip,而不是一个简单的按钮。

显示的问题是未定义属性的访问权限btnstart。是时间不足导致问题还是什么?请帮忙!

如果我的信息太短,请告诉我。我相信听众工作正常。

我正在时间轴上创建这些。

好吧,如果我把btntxt(button, "Start");makebtn 函数放在里面,那就行了。

第二次编辑:

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

通过正确声明孩子来解决:

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 回答