Я слежу за учебником, написанным для ActionScript 2, и успешно преобразовал его в AS 3, однако на второй до последней части я застрял.Случайное число в Actionscript 3
Учебник здесь (http://www.cleverpig.com/tutorials/whackapig/whack.htm шаг 8) имеет следующий фрагмент кода:
if (_currentframe==1) {
// randomly choose whether or not to play
if (random(100)>97) {
// should we tease or popup?
if (random(3)<1) {
this.gotoAndPlay ("popup");
} else {
this.gotoAndPlay (1);
}
}
}
это предназначается, чтобы добавить некоторую хаотичность в движение персонажа. После некоторого googling я создал этот код в AS 3, надеясь, что это сработает.
if (currentFrame==1) {
// randomly choose whether or not to play
if(Math.floor(Math.random()*99)-97) {
// should we tease or popup?
if (Math.floor(Math.random() *3)-1)
) {
this.gotoAndPlay ("popup");
} else {
this.gotoAndPlay (1);
}
}
}
При запуске программы с помощью этого кода всей анимации персонажа играет один раз (вниз, на полпути вверх, вверх, удар). Предполагается, что он будет воспроизводить только первые 3 кадра и повторить это.
EDIT:
function random (n:int) : int {
return Math.floor (Math.random() * n);
}
if (currentFrame==1) {
// randomly choose whether or not to play
if(random(100)): 97 {
// should we tease or popup?
if (random(3)): 1
{
this.gotoAndPlay ("popup");
} else {
this.gotoAndPlay (1);
}
}
}
Символ 'дыра', слой 'Actionscript', Frame 1, строка 10 1084: Синтаксическая ошибка: ожидается идентификатор до того двоеточия. Символ «дыра», слой «ActionScript», кадр 1, строка 10 1008: Атрибут недействителен. Символ 'отверстие', слой 'Actionscript', кадр 1, строка 12 1084: Ошибка синтаксиса: ожидающий идентификатор перед двоеточием. Символ 'отверстие', слой 'Actionscript', кадр 1, строка 13 1008: Атрибут недействителен. Символ 'дыра', Layer 'Actionscript', Кадр 1, Строка 15 1083: Синтаксическая ошибка: другое неожиданно.
Спасибо Эрик, это объяснение помогло разобраться. :) – RapsFan1981
Вот и все! Я только что внес изменения, и они отлично работают. Большое спасибо за то, что нашли время, чтобы указать на недостатки исходного кода и представить эту альтернативу. – RapsFan1981
@ Eric-Paul: Вы ошибаетесь: в исходном учебнике первый условный результат оценивается как true, если случайное число было * больше, чем * 97, так что это было бы верно в 2 из 100 раз, что и есть то, что автор предназначался для этого. – weltraumpirat