2013-09-11 3 views
-1

Добрый день всем,Глобальные переменные и GlowFilters не работает

Я новичок в ActionScript3, и я не могу решить несколько проблем, на мой код. Первая проблема: glowfilter не запускается. Согласно моему исследованию, альфа-альфа-альфа-настроение настроена так, но, когда ı нажмите верный ответ, это не ответ. Но алгоритм ı try ıt вводит правильный случай. Вторая проблема заключается в том, что я хочу определить ответ на запись как глобальный, но когда ı изменил 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> 
+0

rightAnswer не установлен в 0 в коде так, независимо от того, что вы нажимаете на это никогда не будет оценивать истинного –

+0

, даже если я не установлен в 0, то автоматически устанавливается на 0. но я изменил код как когда каждый новый вопрос исходит из массива, я хочу назначить новое значение rightAnswer для глобальной переменной rightAnswer, но даже в базовом, когда ı вызов функции подготовки вопроса ı необходимо изменить значение public var rightAnswer: int. – user2769027

+0

мой вопрос точно я напишу вам ответ за минуту –

ответ

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 


    } 
Смежные вопросы