Приветствую Вас Гость | RSS

Flash. Обо всем по маленьку

Вторник, 23.12.2025, 09:22
Главная » Статьи » Уроки ActionScript

Урок 12-2. ActionScript и временная шкала
Временные шкалы во флеш состоят из одного или более кадров, которые содержат графику, связанную с визуальными элементами, отображаемыми на экране. Временная шкала с множеством кадров будет проходить через эти кадры по мере проигрывания флеш фильма, показывающего анимацию.

В дополнение к графике временные шкалы так же могут содержать ActionScript (наряду с якорями и ярлыками). Точнее кадры внутри временной шкалы могут содержать ActionScript. Код, помещенный в каждый кадр временной шкалы, запускается при отображении этого кадра на экране. С ActionScript 1 и ActionScript 2 флеш работал с парадигмой, которая по большому счету зависела от временной шкалы, как базы не только для анимации, но также и ActionScript. Короче говоря, эта модель была ограничивающей.

ActionScript 3 отделился от временной шкалы, а вместо этого помещает определения ActionScript в отдельные определения класса, которые не зависят от временной шкалы. Воспользуйтесь следующим классом ActionScript 2.

// ActionScript 2 definition in Example.as

class Example {

 public var num:Number;

 private var str:String = "text";

 public function Example(){

  num = 1;

 }
 public function doubleNum():Void {

  num *= 2;
 }
}

FLA файл может использовать этот класс в кадре 1 основной временной шкалы с помощью следующего кода:

// main timeline of ActionScript 2 FLA

var myExample:Example = new Example();

После компиляции и опубликования в SWF файл, SWF файл получает код, который прикрепляется к временной шкале и главным образом выглядит наподобие этого:

// compiled version

_global.Example = function(){

 this.num = 1;

}

Example.prototype.str = "text";

Example.prototype.doubleNum = function(){

 this.num *= 2;

}

myExample = new Example();

Все определения классов в ActionScript 2 после компиляции попадают на основную временную шкалу в качестве определений ActionScript 1. И действительно, если быть точнее, определения попадают в динамически сгенерированные символы клипов, помещенные в библиотеку во время компиляции. Тем не менее, внутри временных шкал этих клипов определения создаются в блоке #initclip/#endinitclip, который, в конечном счете, транслирует код в основную временную шкалу определения. Другой способ – конечный результат является кодом, помещенным на временную шкалу, который запускается при запуске этого кадра временной шкалы.

В ActionScript 3 классы стали изолированными определениями. Они не кончаются на временной шкале, поэтому для того, чтобы временная шкала была определена, она должна быть запущена. Фактически, противоположное происходит с кодом, помещенным на временную шкалу в ActionScript 3. В этом экземпляре код временной шкалы выводится за пределы временной шкалы и помещается в определение класса, которое затем используется для определения экземпляра временной шкалы. Просмотрите следующий код ActionScript 3, помещенный на основной временной шкале во флеш.

var num:Number = 10;

function isOdd(num:Number):Boolean {

 return Boolean(num % 2);

}

trace(isOdd(num));

После компиляции этот код временной шкалы удаляется из нее, а вместо этого помещается в определение класса, используемого для описания основной временной шкалы.

package {

 public class MainTimeline extends MovieClip {

  public var num:Number;

  public function MainTimeline(){

  super();

  addFrameScript(0, frame1);

  }

  public function isOdd(num:Number):Boolean {

  return Boolean(num % 2);

  }

  public frame1(){

  num = 10;

  trace(isOdd(num));

  }

 }

}

Этот класс используется потом, когда основная временная шкала подвергается обработке. Помня это, будет немного проще понять, почему нельзя определить переменную, или функцию, более одного раза в любом месте той же временной шкалы. Если вы сделаете это, то у вас в классе будут конфликтующие определения, которые генерируются из кода на временной шкале.
Категория: Уроки ActionScript | Добавил: anti_k (26.02.2010)
Просмотров: 1218 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
1 ivan1986ov  
спасибо за уроки

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]