我很习惯于时间轴代码,这让我感到困惑。我如何获得一个按钮
class来识别舞台上的按钮实例?
请帮忙。
......刚刚修改过 Buttons.fla
Class: 'Buttons'
Button with instance name placed on stage
Buttons.as
package {
import flash.display.MovieClip;
public class Buttons extends MovieClip {
public function Buttons() {
mc.addEventListener(MouseEvent.MOUSE_DOWN, onClick);
stage.addChild(this);
}
public function onClick(event:MouseEvent):void{
trace("Hello World");
}
}
}
错误:
1120:未定义的财产
该错误表示它是鼠标事件,而不是我的实例名称mc。
答案 0 :(得分:2)
你缺少大括号和mc的定义以及MouseEvent的导入(上面问题的根源):
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Buttons extends MovieClip {
public function Buttons() {
//it's better to use "this" here instead of adding another
//instance of movieclip named "mc"
this.addEventListener(MouseEvent.MOUSE_DOWN, onClick);
}
public function onClick(event:MouseEvent):void{
trace("Hello World");
}
}
}
当然,有几种其他/更好的方法可以实现这些相同的结果,但这至少应该解决您的编译问题。现在,要将其添加到舞台上,您需要将其添加到存在的内容中。一种简单的方法是将以下行放在 this.addEventListener 下面:
stage.addChild(this);
如果您对此工作有其他疑问,请与我们联系。我希望能指出你正确的方向,
- gMale
编辑:
回应下面的评论a link to the Flash files。我试图遵循你正在做的事情的意图。在IDE中编码了一个快速可点击按钮,另一个快速点击按钮编码在单独的* .AS文件中:
答案 1 :(得分:1)
这可能有助于'mc'实例
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Buttons extends MovieClip {
public function Buttons() {
//it's better to use "this" here instead of adding another
//instance of movieclip named "mc"
this.addEventListener(MouseEvent.MOUSE_DOWN, onClick);
}
public function onClick(event:MouseEvent):void{
trace("Hello World");
//PASS IT INTO THE BRACKETS
stage.addChild(mc);//<--------------------------
}
}
}
答案 2 :(得分:1)
要访问在IDE中创建的实例,您需要使用[]语法调用它们,这可以:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Buttons extends MovieClip {
public function Buttons() {
this["mc"].addEventListener(MouseEvent.MOUSE_DOWN, onClick);
//stage.addChild(this); // this is really not useful
}
public function onClick(event:MouseEvent):void{
trace("Hello World");
}
}
}
还要注意您需要导入MouseEvent。 :)
如果你真的需要能够通过mc访问你的按钮,它需要更多的代码:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class Buttons extends MovieClip {
protected var mc:MovieClip;
public function Buttons() {
if(this["mc"] is MovieClip){
mc = this["mc"];
}else{
//you probably want to create it if not found on the stage.
}
mc.addEventListener(MouseEvent.MOUSE_DOWN, onClick);
}
public function onClick(event:MouseEvent):void{
trace("Hello World");
}
}
}
希望这有帮助。