首先,我是初学者。第二,请有人改变标题,因为我想不出更好的标题。
这就是问题所在:
makebtn(0, 150, true, "btnstart");
btntxt(btnstart, "Start");
我制作了两个函数,一个makebtn
:makebtn( 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);
}
我将我的按钮设为动画片而不是简单的按钮。
显示的问题是未定义属性的访问权限为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);
}
答案 0 :(得分: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);
}
答案 1 :(得分:0)
您正在尝试通过创建子项并为其指定名称来创建动态属性。它没有这种方式。您可以使用getChildByName()
并通过字符串调用函数,例如btntxt("btnstart","Start");
,也可以使用this[]
构造手动将属性添加到主类的动态MovieCkip中。 this[newname]=button;
答案 2 :(得分: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;
}