Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 类中的this.width始终返回相同的值_Apache Flex_Flash_Actionscript 3 - Fatal编程技术网

Apache flex 类中的this.width始终返回相同的值

Apache flex 类中的this.width始终返回相同的值,apache-flex,flash,actionscript-3,Apache Flex,Flash,Actionscript 3,在我的AS3类中,我调用this.width,它返回的值始终为1,即使考虑到对象的内容,这是不可能的 这是AS3的标准行为吗 这个类的简单版本发布在下面。它附加到仅包含一个简单六边形的MovieClip符号上 package { import flash.display.*; import flash.utils.*; import flash.events.*; public class Hexagon extends MovieClip {

在我的AS3类中,我调用
this.width
,它返回的值始终为1,即使考虑到对象的内容,这是不可能的

这是AS3的标准行为吗

这个类的简单版本发布在下面。它附加到仅包含一个简单六边形的MovieClip符号上

package {

    import flash.display.*;
    import flash.utils.*;
    import flash.events.*;

    public class Hexagon extends MovieClip
    {
        var startWidth:Number;
        var startHeight:Number;

        public function Hexagon() 
        {
            var myTimer:Timer = new Timer(2000);
            myTimer.addEventListener(TimerEvent.TIMER, timerFunction);
            myTimer.start();

            startWidth = this.width;
            startHeight = this.height;

            trace("startWidth:" + " " + startWidth);
            trace("startHeight:" + " " + startHeight);
        }

        function timerFunction (evt:TimerEvent):void
        {

        }
    }
}

是的,这是标准的,因为您在构造函数中要求宽度和高度,此时属性/访问器设置未建立。等待属性被正式设置,这是在
事件之后最可靠的设置。已将\u添加到\u阶段
。这对我有用:

package
{
    import flash.display.*;
    import flash.events.*;
    import flash.utils.*;

    public class Movie extends MovieClip
    {
        public var startWidth:Number;
        public var startHeight:Number;

        public function Movie() 
        {
            var myTimer:Timer = new Timer(2000);
            myTimer.addEventListener(TimerEvent.TIMER, timerFunction);
            myTimer.start();

            startWidth = this.width;
            startHeight = this.height;

            trace("startWidth:" + " " + startWidth);
            trace("startHeight:" + " " + startHeight);
            addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
        }

        public function addedToStageHandler(event:Event):void
        {
            startWidth = this.width;
            startHeight = this.height;

            trace("new startWidth:" + " " + startWidth);
            trace("new startHeight:" + " " + startHeight);
        }

        public function timerFunction(evt:TimerEvent):void
        {

        }
    }
}
如果有帮助,请告诉我,
兰斯

问题是你没有使用Silverlight。你的课程扩展了什么?也许你可以发布它的简化版本,没有它就很难判断问题出在哪里。我已经将我的原始问题简化为包含简化代码。您好,cmal,您上面的代码没有说明这个问题。你可以发布更多的代码,或者显示一些图片吗?没有更多的代码了。这就是一切。我在FlashCS4中创建了一个新的MovieClip,并将其链接为Hexagon,以便它使用这个类。编译SWF时,它会跟踪控制台的宽度和高度的“1”和“1”,即使六边形剪辑的高度超过100像素。根据我在这里发布的代码,任何人都应该能够轻松地复制与我完全相同的条件。