2012-01-17 2 views
0

по какой-то причине в одном случае я не могу получить goToAndStop (2), чтобы перейти на второй кадр клипа, который имеет два кадра, и он загружен!AS3 goToAndStop() BUG?

Я добавляю мувиклип на сцену функции-конструктора класса. а затем по щелчку button1 я меняюсь кадр в кадр 2. а затем обратно к кадру 1 по щелчку button2 ..

Ни один из них не работает .....

Но .. если установить movieclip в goto frame 2 в функции конструктора, то он запускается на кадре 2, когда я нажимаю кнопку1, он остается на кадре 2 (поскольку он говорит ему, чтобы перейти к кадру 2), а затем нажатие на кнопку2 успешно меняет его на первый кадр. и затем я могу снова нажать на кнопку1, и он изменит ее на второй кадр.

Удалить функцию _movie.gotoAndStop (2) из ​​функции-конструктора, и ни одна из них не работает снова.

public function changeBackground($frame:int):void 
{ 
    trace('gotoFrame', $frame); 
    _movie.gotoAndStop($frame); 
    trace('currentFrame',_movie.currentFrame); 
} 

button1 нажмите кнопку Выходное

gotoFrame 2 
currentFrame 2 

button2 нажмите кнопку Выходное

gotoFrame 1 
currentFrame 1 

Так он говорит, что находится на правильной рамке, но отображая иначе!

есть определенно только один экземпляр этого класса на сцене

+0

Код должен работать. Что-то еще должно быть неправильно. – weltraumpirat

ответ

-2

я, как правило, обычно используют $ префикс Варс передается в функцию, _ для вары частной функции или класса и нет префикс для публичных варов, личные предпочтения, я не делюсь своим кодом, поэтому это не имеет значения. и выясняется, что это была проблема с конкретной версией flex, которую я использовал для усложнения FlashDevelop .. и быстрого обновления, и все это работало нормально, было поражено и пропущено на разные объекты, действительно ли это будет gotoAndStop на фреймах или нет ....

0

Во-первых, пожалуйста, удалите $ в ваших переменных. Они не нужны для удобочитаемости и только замедляют работу.

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

Поскольку вы говорите, что конструктор меняет рамку, просто найдите, я думаю, что ваше _movie не совпадает с кнопкой. Попробуйте также изменить положение _movie, чтобы узнать, разговариваете ли вы с правильным объектом.

Кроме того, эта проблема может потому, что сцена не недействительности достаточно быстро: AS3 - gotoAndStop with immediate action

+0

'-1' Для ваших первых двух абзацев, которые не актуальны. Что касается первого предложения, нет никакого недостатка в использовании '$' и является собственным стилем OP, который отлично подходит (если, конечно, проект не будет выпущен как основа для Flash-игр или аналогичных, и в этом случае все будут разрывать их волосы). – Marty

+0

@ Марти, я не согласен. Форматирование очень важно, поскольку это язык анализируемого выражения. Код является общедоступным, поскольку он был разделен здесь. В любой области важно правильно выразить свою проблему своим сверстникам. –

+0

Я обычно использую префикс '$' для варов, передаваемых функции, '_' для vars, закрытых для функции или класса, и без префикса для публичных варов, личных предпочтений, im, не делящих мой код, так что это не имеет значения , и выясняется, что это была проблема с конкретной версией flex, которую я использовал, чтобы усложнять FlashDevelop .. и быстрое обновление, и все это работало нормально, было поражено и пропущено на разных объектах, было ли это на самом деле gotoAndStop на фреймах или нет ..... – rorypicko

1

Ok сначала немного напыщенный ...

Я также нашел некоторые серьезно расстраивают проблемы с gotoAndStop в AS3. Кажется, что у него проблемы с отображением правильного кадра клипа, если на сцене больше, чем несколько экземпляров этого мувиклипа. Я могу понять, что иногда кадр может не отображаться во времени для кода для ссылки на объекты на этом кадре, но, безусловно, после того, как флэш отобразит следующий кадр, все клипы должны показать, что находится в кадре !!?Мне трудно поверить, что одна из фундаментальных концепций flash - видеоролика временной шкалы - кажется, не работает на 100% в as3.

Теперь я надеюсь, полезный ответ ...

Единственный способ, которым я сумел обойти это с помощью источника изображения класса клипа, (либо скрыты на сцене или просто создан в коде из библиотека). Затем я могу использовать gotoAndStop только в одном клипе, рисовать его с помощью класса BitmapData столько раз, сколько требуется, и добавлять эти изображения к отображаемым объектам, которые мне нужны.

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