0

さて、誰かが本当にこれを手伝ってくれるかもしれません. 最後に必要なのは、アプリケーションの最後のフォームに移動するための nextquestion1 関数です。

ボタンをクリックして、nextQuestion_btn所有しているラベル付きフレームの 1 つに移動します。クリックしても何も起こりません。また、2 つの Event Listener の間には多くの欠落コードがあります。

それで...ボタンで次のフレームをトリガーできるように、このコードをどのように作成できますか?

stage.addEventListener(Event.CHANGE, checkTotal1000)

    function checkTotal1000(e:Event){

    var tech:Number = parseInt(tech_txt.text);
    var med:Number = parseInt(med_txt.text);
    var space:Number = parseInt(space_txt.text);
    var genetic:Number = parseInt(ge_txt.text);
    var worldComp:Number = parseInt(worldComp_txt.text);
    var mars:Number = parseInt(mars_txt.text);
    var worldColab:Number = parseInt(worldColab_txt.text);
    var nothing:Number = parseInt(nothing_txt.text);

    var zombieApocFinal:Number = zombieApoc + genetic;
    var robotApocFinal:Number =  robotApoc+ tech;
    var plagueFinal:Number = plague + med;
    var asteroidFinal:Number = asteroid + mars;
    var iceAgeFinal:Number = iceAge + nothing;
    var aliensFinal:Number = aliens + space;
    var nukeWarFinal:Number = nukeWar + worldComp;
    //var happyEverAfterFinal:Number = ;

trace(aliensFinal);

var total1000:Number = tech + med + space + 
    worldComp + mars + genetic + worldColab + nothing;


nextQuestion_btn.addEventListener(MouseEvent.MOUSE_DOWN, nextQuestion1)
function nextQuestion1(e:MouseEvent){   

if(tech && med && space &&  genetic && worldComp 
   && mars && worldColab && nothing == 125){
    gotoAndStop(7);   
}
if(robotApocFinal > zombieApocFinal && plagueFinal &&
   asteroidFinal && iceAgeFinal && aliensFinal &&
   nukeWarFinal){
       gotoAndStop("Robot");  
}
else if(zombieApocFinal > robotApocFinal && plagueFinal &&
   asteroidFinal && iceAgeFinal && aliensFinal &&
   nukeWarFinal){
       gotoAndStop("Zombie");   
}
else if( plagueFinal > zombieApocFinal && robotApocFinal &&
   asteroidFinal && iceAgeFinal && aliensFinal &&
   nukeWarFinal){
       gotoAndStop("Plague");  
}

else if( asteroidFinal > zombieApocFinal && robotApocFinal && 
   plagueFinal && iceAgeFinal && aliensFinal &&
   nukeWarFinal){
       gotoAndStop("Asteroid");  
}
else if( iceAgeFinal > zombieApocFinal && robotApocFinal && 
   plagueFinal && asteroidFinal && aliensFinal &&
   nukeWarFinal){
       gotoAndStop("IceAge");  
}
else if( aliensFinal > zombieApocFinal && robotApocFinal && 
   plagueFinal && asteroidFinal && iceAgeFinal &&
   nukeWarFinal){
       gotoAndStop("Aliens");  
}
else if( nukeWarFinal > zombieApocFinal && robotApocFinal && 
   plagueFinal && asteroidFinal && iceAgeFinal &&
    aliensFinal){
       gotoAndStop("Nuke");
}
}
}
4

1 に答える 1

0

どうやらバイナリフラグを使用していますが&&、ブール値でのみ機能する演算子を使用しています。このように、int のいずれかが 0 の場合、条件は満たされていません。gotoAndStop()int の 1 つが他よりも大きい場合にトリガーしたいようです。これには、次のコードを使用できます。

var bestFinal:int=Math.max(asteroidFinal, zombieApocFinal, robotApocFinal,
plagueFinal, iceAgeFinal, aliensFinal, nukeWarFinal);
if (bestFinal==asteroidFinal) {...}
else if (bestFinal==zombieApocFinal) {...}
...

1 つの var が他のすべての変数よりも大きいかどうかをテストしようとしている場合は、記述したものを使用することはできません。代わりに、いずれかを使用Math.max()して等しいかどうかを確認するか、多くの比較を記述して を介して結合します&&。次のようにします。

if ((asteroidFinal > zombieApocFinal) && (asteroidFinal > robotApocFinal) && 
(asteroidFinal > plagueFinal) && (asteroidFinal > iceAgeFinal) && 
(asteroidFinal > aliensFinal) && (asteroidFinal > nukeWarFinal))
于 2013-10-17T03:21:22.103 に答える