0

我试图访问位于按钮中的movieclip,我通过以下代码引用:

var buttonObject = this[weaponsPurchased[i]];

然后我将“mouseEnabled”设置为false(那部分有效)

buttonObject.mouseEnabled = false;

然后我试图在这个按钮内设置一个不可见的电影剪辑(这不起作用)

buttonObject["square"].visible = false;

我收到此错误:

ReferenceError:错误 #1069:在 flash.display.SimpleButton 上找不到属性 square,并且没有默认值。在 (...)

我在互联网上没有找到任何帮助,所以请帮助我。我究竟做错了什么?

4

2 回答 2

0

我前段时间遇到过这个问题。我所做的是在按钮的每个状态中搜索 DisplayObject。我会在这里放一些可能对你有帮助的代码。您必须意识到,如果您的按钮在所有四个框架中都有对象,那么您也会在所有状态下找到您的对象。

    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");
        }
    }
于 2013-02-01T23:44:07.283 回答
0

您不能访问 SimpleButton 的子元素。SimpleButtons 不是 DisplayObjectContainers,但是当从 Flash IDE 创建时它们可以有子元素。

来源:http: //xtyler.com/as3-simple-button-break-all-rules/

我只会使用 MovieClip,而不是使用您自己的类来处理 MouseOver 和 MouseOut 事件。一个很好的教程概述了如何创建一个可重用的扩展 MovieClip 的按钮类。

http://www.ironcoding.com/2011/02/flash-as3-movieclip-button-tutorial/

于 2013-02-01T18:51:17.443 回答