2013-11-02 2 views
0

У меня есть три кнопки, которые должны переключаться при нажатии и выключении. Все три имеют одинаковый код, но работает только первый.AS3 gotoAndStop() не работает и делает трассировку() не работает также

Каждая кнопка перескакивает в другую рамку, где эта конкретная кнопка «переключается», а затем при повторном нажатии она может вернуться в главное меню, которое я обозначил как «главное».

Когда я нажимаю кнопки B (и C, но я просто ссылаюсь на B в качестве примера), он отслеживает «B был выбран», как и предполагалось, но когда я нажимаю снова, ничего не происходит. Он не отслеживает «B был отменен» или gotoAndStop() на фрейме «main», как это предполагалось. Когда я удаляю строки gotoAndStop() из кнопок B и C, он работает правильно, отслеживание «B было выбрано», а затем «B был отменен» при включении и выключении.

У меня нет абсолютно никакой идеи, почему кнопки B и C не работают, и я переписал код столько раз.

Любая помощь, которую кто-либо может дать мне, будет оценен очень!

stop(); 

var a:int; 
a=0; 
var b:int; 
b=0; 
var c:int; 
c=0; 

var hitA:Boolean=false; 

btnA.addEventListener(MouseEvent.CLICK, AHandler); 
function AHandler(e:Object):void { 
    if (hitA==false) { 
     hitA=true; 
    } 
    if(a==0){ 
     trace("A was selected"); 
     gotoAndStop("Aup"); 
     a=1 
     } else { 
       trace("A was deselected"); 
       a=0; 
       gotoAndStop("main"); 
    } 
} 


//////Button B 

var hitB:Boolean=false; 

btnB.addEventListener(MouseEvent.CLICK, BHandler); 
function BHandler(e:Object):void { 
    if (hitB==false) { 
     hitB=true; 
    } 
    if(b==0){ 
     trace("B was selected"); 
     gotoAndStop("Bup"); 
     b=1 
     } else { 
       trace("B was deselected"); 
       b=0; 
       gotoAndStop("main"); 
    } 
} 

//////Button C 


var hitC:Boolean=false; 

btnC.addEventListener(MouseEvent.CLICK, CHandler); 
function CHandler(e:Object):void { 
    if (hitC==false) { 
     hitC=true; 
    } 
    if(c==0){ 
     trace("C was selected"); 
     gotoAndStop("Cup"); 
     c=1 
     } else { 
       trace("C was deselected"); 
       c=0; 
       gotoAndStop("main"); 
    } 
} 
+0

Это было некоторое время, так как я сделал шкалы времени кодирования, но попытайтесь поместить свой код в своем собственном слое, который имеет только один ключевой кадр и охватывает на протяжении всей шкалы времени. Поэтому, если «Aup» - это кадр 1, «Bup» - это кадр 3, «Кубок» - это кадр 7, ваш слой кода должен быть от кадра 1 до кадра 7. – TreeTree

+0

@TreeTree У меня есть весь код на фрейме, один из слоя, называемого «действия». Однако каждый ярлык имеет ключевое слово на разных кадрах. –

+0

Если ваш код существует только на одном фрейме, ничего не произойдет, когда вы перейдете к другому фрейму, потому что там нет кода. Я подозреваю, что это то, что происходит. Вы описали, что кнопки работают только в первый раз, когда вы нажимаете на них. – TreeTree

ответ

0

The document class

Эта фотография подчеркивает, где вы задаете ваш класс документа для вашего проекта. Этот класс является файлом actionscript (.as) и, как и все файлы .as, содержит код. Это тот же код, который вы устанавливаете на временные рамки, за исключением .as, которые просто отделены от файла .fla, но могут быть подключены к нему. При написании кода в .as-файла вам просто нужно поместить все это в пакет, а затем в класс, но помимо этого вы можете просто скопировать и пропустить ваш код. Если он находится в классе документа, он будет работать независимо от того, что рамка вашей временной шкалы включена.

package{ 
    public class{ 
    // your code here 
    } 
} 

Если это все еще запутанно, просто взгляните на него, есть много замечательных книг на все, что вам нужно.

0

Вы можете попробовать этот код ...

btnA.addEventListener(MouseEvent.CLICK, AHandler); 
function AHandler(e:Object):void { 
    if (hitA==false) { 
     hitA=true; 
    } 

btnA.addEventListener(MouseEvent.DOUBLE_CLICK, Adouble); 
function Adouble(e:Object):void { 
    gotoAndStop("main"); 
Смежные вопросы