我试图访问位于按钮中的影片剪辑,我通过以下代码引用该按钮:
var buttonObject = this[weaponsPurchased[i]];
然后我设置"鼠标启用"假(该部分有效)
buttonObject.mouseEnabled = false;
然后我尝试在此按钮内设置一个不可见的电影剪辑(这不起作用)
buttonObject["square"].visible = false;
我收到此错误:
引用错误: 错误 #1069: 在 上找不到属性方块 flash.display.SimpleButton,没有默认值。 在 (...
我在互联网上找不到任何帮助,所以请帮助我。我做错了什么?
您不能访问 SimpleButton 的子元素。SimpleButton 不是 DisplayObjectContainers,但它们在从 Flash IDE 创建时可以具有子元素。
来源: http://xtyler.com/as3-simple-button-breaking-all-rules/
我只会使用MovieClip而不是使用您自己的类来处理MouseOver和MouseOut事件。一个好的教程概述了如何创建扩展影片剪辑的可重用按钮类。
http://www.ironcoding.com/2011/02/flash-as3-movieclip-button-tutorial/
我刚才遇到了这个问题。我所做的是在按钮的每个状态中搜索显示对象。我将在此处删除一些可能对您有所帮助的代码。您必须意识到,如果您的按钮在所有四个帧中都有对象,您也会在所有状态下找到您的对象。
private var Obj1:DisplayObject, Obj2:DisplayObject,
Obj3:DisplayObject, Obj2:DisplayObject;
private function searchInChildren(spr:DisplayObject, name:String):void
{
for (var i:int = 0; i < spr.numChildren; i++)
{
if(spr.getChildAt(i).name == name)
{
return spr.getChildAt(i);
}
}
return null;
}
public function searchControllers(_ref:SimpleButton, name:String):void
{
try{
Obj1 = searchInChildren(_ref.upState, name);
Obj2 = searchInChildren(_ref.overState, name);
Obj3 = searchInChildren(_ref.downState, name);
Obj4 = searchInChildren(_ref.hitTestState, name);
} catch (e:Error) {
trace("error: "+e+", when trying to search for controllers");
}
}