在AS3中 - 我使用通用按钮处理程序来处理影片剪辑对象上的点击事件。在过去的4个小时里,我一直在尝试将图像添加到此影片剪辑(请参阅* * *)对象。
代码(我剪切并粘贴了一点,但这一切都编译没有任何错误)
btPlay = new mcButtonPlay(this,"ClickMe",GameImage); // GameImage is an BitmapData object
public class mcButtonPlay extends navigationButtonHandler {
public function mcButtonPlay(Parent:MovieClip,Text:String,GameImage:BitmapData) {
super(Text);
if (GameImage != null) {
var ImageBitMap:Bitmap = new Bitmap(GameImage);
this.addChild(ImageBitMap); // * * * This doesn’t show
Parent.addChild(ImageBitMap); // Works just to test the image
}
}
}
public class navigationButtonHandler extends MovieClip {
public function navigationButtonHandler(Text:String) {
ChangeButtonTargetText(Text);
Parent.addChild(this);
}
}
答案 0 :(得分:0)
this.addChild(ImageBitMap); // * * * This doesn’t show
Parent.addChild(ImageBitMap); // Works just to test the image
使用此代码,ImageBitMap
已从“this
”移除并置于“Parent
”中,因此您永远不会在“this
”中看到它。< / p>
删除第二行并告诉我它是否仍然有效。
编辑:
您是否将btPlay添加到舞台或显示层次结构中?
例如。
btPlay = new mcButtonPlay(this,"ClickMe",GameImage);
this.addChild(btPlay);
答案 1 :(得分:0)
public class navigationButtonHandler extends MovieClip {
public function navigationButtonHandler(Text:String) {
ChangeButtonTargetText(Text);
Parent.addChild(this); //<--------????
}
}
Parent
来自问题中复制的上述代码?看起来navButtonHandler类似乎永远不会被添加到舞台上,因为它没有得到Parent
?因此,扩展类也永远不会添加到舞台中,这就是为什么如果你将它添加到你的mcButtonPlay类中,你的图像永远不会显示的原因。
扩展构造函数DOES传递Parent
参数,但基类不传递。这对我来说似乎很奇怪,不应该编译。或者你在幕后做一些静态的事情?
并按照评论中的说明开始研究您的大写形式。如果您遵循常见惯例,阅读和查找错误会更容易!
答案 2 :(得分:0)
管理通过交换超级并添加子逻辑来修复它:
public class mcButtonPlay extends navigationButtonHandler {
public function mcButtonPlay(Parent:MovieClip,Text:String,GameImage:BitmapData) {
if (GameImage != null) {
var ImageBitMap:Bitmap = new Bitmap(GameImage);
this.addChild(ImageBitMap); // * * * This doesn’t show
Parent.addChild(ImageBitMap); // Works just to test the image
}
super(Text);
}
}
不知道为什么!