повторить текстовую анимацию, as3 - PullRequest
0 голосов
/ 11 мая 2010

Моя текстовая анимация работает отлично, но не повторяется. Как мне это повторить? Извините, я не очень хорошо знаю Flash, но я просто хочу, чтобы это играло снова и снова. Спасибо.

var myArray:Array = ["Big",
                     "Holiday",
                     "Sale",
                     "Buy",
                     "Now",
                     "And",
                     "Save"];
Timer
var tm:Timer = new Timer(500,0);
tm.addEventListener(TimerEvent.TIMER, countdown);
function countdown(event:TimerEvent) {
if (myArray.length>0){
tx.text = myArray.shift();
}
}
tm.start();

Я пробовал это

if (++myArray.length % 10 == 0)

Ответы [ 5 ]

3 голосов
/ 11 мая 2010

Вместо функции shift () из вашего массива сохраните индекс, в котором вы находитесь (сначала 0), и увеличьте его в обратном отсчете по модулю длины массива.

2 голосов
/ 11 мая 2010

простое решение:

myArray.push(tx.text = myArray.shift());

но решение Шарви значительно лучше. это будет работать так:

var myArray:Array = ["Big",
                     "Holiday",
                     "Sale",
                     "Buy",
                     "Now",
                     "And",
                     "Save"];
var tm:Timer = new Timer(500,0);
var index:int = 0;
tm.addEventListener(TimerEvent.TIMER, countdown);
function countdown(event:TimerEvent) {
    tx.text = myArray[index];
    index = (index + 1) % myArray.length;//increment and "wrap around"
}
tm.start();
1 голос
/ 13 мая 2010

Эй, я не хочу быть большой вечеринкой, но разве что-то вроде этого не будет лучше решено с помощью временной шкалы Flash? То есть создать зацикленную анимацию в самой Flash? Таким образом, вы просто экспортируете его в actionscript и добавляете анимацию в коде как ребенок.

var anim:MyOffensiveAnimation = new MyOffensiveAnimation();
addChild(anim); // that's it, animation starts playing

Или еще лучше, добавьте его в любой мувиклип, в котором он должен быть.

Кстати, мне очень понравилось "простое решение" back2dos.

1 голос
/ 11 мая 2010

То, что означает Шарви, выглядит примерно так:

var myArray:Array = ["Big",
                     "Holiday",
                     "Sale",
                     "Buy",
                     "Now",
                     "And",
                     "Save"];
var tm:Timer = new Timer(500);
tm.addEventListener(TimerEvent.TIMER, countdown);
function countdown(event:TimerEvent) {
    tx.text = myArray[(tm.currentCount-1)%myArray.length];
}
tm.start();

Мы вычитаем 1 из tm.currentCount, чтобы использовать счет в качестве индекса массива (на основе 0), затем используем модуль (%), чтобы «зациклить / ограничить» счетчик длиной массива. Кроме того, таймер теперь работает «навсегда».

Мы все говорим об одном и том же немного по-разному :)

0 голосов
/ 20 июля 2010
// OP's Timer-related code ommitted
var i:int = 0;
function countdown(e:Event) {
  tx.text = myArray[i];
  i = (i+1) % myArray.length; // resets i to zero when it gets to the size of the array
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...