-1

大家好,

我是 actionscript3 的新手,我无法解决我的代码上的一些问题。第一个问题是发光过滤器没有运行。根据我的研究,glowfilter 的 alpha 是这样设置的,但是,当我单击真正的答案时,它没有响应。但是我尝试算法会输入正确的情况。第二个问题是我想将写答案定义为全局,但是当我在函数中更改了 rightAnswer 时它没有改变,我怎么能解决这个问题?我认为在 actionscript 中定义全局变量与 c 不同。

感谢您的帮助,并为我糟糕的英语感到抱歉!

<s:Button id="answer1" width="388" height="68" label="" cornerRadius="16"
              fontFamily="Georgia" fontSize="17" click="checkanswers(1)">
        <s:filters>
            <mx:GlowFilter id="answer1_glow" color="0x00ff00" alpha="0" strength="3"/>
            <mx:GlowFilter id="answer1_glow2" color="0xff0000" alpha="0" strength="3"/>
        </s:filters>
    </s:Button>
    <s:Button id="answer2" width="388" height="68" label="" cornerRadius="16"
              fontFamily="Georgia" fontSize="17" click="checkanswers(2)">
        <s:filters>
            <mx:GlowFilter id="answer2_glow" color="0x00ff00" alpha="0" strength="3"/>
            <mx:GlowFilter id="answer2_glow2" color="0xff0000" alpha="0" strength="3"/> 
        </s:filters>
    </s:Button>
    <s:Button id="answer3" width="388" height="68" label="" cornerRadius="16"
              fontFamily="Georgia" fontSize="17" click="checkanswers(3)">
        <s:filters>
            <mx:GlowFilter id="answer3_glow" color="0x00ff00" alpha="0" strength="3"/>
            <mx:GlowFilter id="answer3_glow2" color="0xff0000" alpha="0" strength="3"/>
        </s:filters>
    </s:Button>
    <s:Button id="answer4" width="388" height="68" label="" cornerRadius="16"
              fontFamily="Georgia" fontSize="17"  click="checkanswers(4)">
        <s:filters>
            <mx:GlowFilter id="answer4_glow" color="0x00ff00" alpha="0" strength="3"/>
            <mx:GlowFilter id="answer4_glow2" color="0xff0000" alpha="0" strength="3"/>
        </s:filters>
    </s:Button>

</s:VGroup>
<fx:Script>
    <![CDATA[
        import flash.events.TimerEvent;
        import flash.utils.Timer;

        import mx.controls.Alert;
        import mx.events.FlexEvent;

        import mx.core.FlexGlobals;
        import mx.events.FlexEvent;

        private var baseTimer:int;
        private var t:Timer;
        private const TIMER_INTERVAL:Number = 10;


        public var rightAnswer:int = 0 ;     // ---> ı want to use a global rightAnswer .

        public function checkanswers(answer:int):void{
        trace("answer is " + answer );  
        trace("rightanswer is " + rightAnswer);
               if ( answer == rightAnswer) {
                       switch (answer) {
                       case 1 :
                          answer1.label = "green"; 
                          answer1.alpha = 1;  // ı want to change glowfilters alpha in there.
                           break;
                       case 2 :
                          answer2.label = "green"; 
                          answer2_glow.alpha = 1; 
                           break;
                       case 3 :
                           answer3.label = "green"; 
                          answer3_glow.alpha = 1; 
                           break;
                       case 4 :
                           answer4.label = "green"; 
                          answer4_glow.alpha = 1;  
                           break;
                       default :

                           break;
                   }
             } 
               else{
                   switch (answer) {
                       case 1 :
                           answer1.label = "red";
                           answer1_glow2.alpha = 1; 
                           break;
                       case 2 :
                           answer2.label = "red";
                           answer2_glow2.alpha = 1.0; 
                           break;
                       case 3 :
                           answer3.label = "red;
                           answer3_glow2.alpha = 1.0; 
                           break;
                       case 4 :
                           answer4.label = "red";
                           answer4_glow2.alpha = 1.0;  
                           break;
                       default :

                           break; 

               }

                   switch (rightAnswer) {
                       case 1 :
                           answer1.label = "green"; 
                           answer1_glow.alpha = 1; 
                           break;
                       case 2 :
                           answer2.label = "green"; 
                           answer2_glow.alpha = 1; 
                           break;
                       case 3 :
                           answer3.label = "green"; 
                           answer3_glow.alpha = 1; 
                           break;
                       case 4 :
                           answer4.label = "green"; 
                           answer4_glow.alpha = 1;  
                           break;
                       default :

                           break;
                   }

               }               
}              

        public function application1_creationCompleteHandler(event:FlexEvent):void
        {
            // TODO Auto-generated method stub
            soru.text = " En büyük kim ?";
            answer1.label = "Galasaray";
            answer2.label = "Bursaspor";
            answer3.label = "Beşiktaş";
            answer4.label = "Fenerbahçe";
            var rightAnswer:int = 2;
            trace(" rightAnswer fonkideki " + rightAnswer); 
        }

    ]]>
</fx:Script>
4

1 回答 1

0

你的问题是变量范围,它没有做你认为它正在做的事情。
当您使用关键字“var”时,您将在当前范围内创建一个新变量。
在这种情况下,您尝试将 2 分配给类级别变量“rightAnswer”,而实际上您正在创建一个名为“rightAnswer”的新变量,其范围为函数级别。

    public function application1_creationCompleteHandler(event:FlexEvent):void
    {
        // TODO Auto-generated method stub
        soru.text = " En büyük kim ?";
        answer1.label = "Galasaray";
        answer2.label = "Bursaspor";
        answer3.label = "Beşiktaş";
        answer4.label = "Fenerbahçe";
        var rightAnswer:int = 2; // <<<<--- right here is your problem
        trace(" rightAnswer fonkideki " + rightAnswer); 
    }

所以改为这样做。

    public function application1_creationCompleteHandler(event:FlexEvent):void
    {
        // TODO Auto-generated method stub
        soru.text = " En büyük kim ?";
        answer1.label = "Galasaray";
        answer2.label = "Bursaspor";
        answer3.label = "Beşiktaş";
        answer4.label = "Fenerbahçe";
        var rightAnswer:int = 12345678; // <<<<--- right here is your problem
        this.rightAnswer = 2; // <<<<--- here is your correction
        trace(" rightAnswer class level" + this.rightAnswer);
        trace(" rightAnswer function level" + rightAnswer);// << -- this can only be accessed inside of the current function


    }
于 2013-09-11T18:35:22.290 回答