![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 327
|
В ActionScript 3, можно динамически менять частоту кадров (frame rate) ролика используя класс Stage.
Класс Stage (flash.display.Stage) связан со сценой главного ролика и имеет свойство frameRate, которое может принимать значения от 0.01 до 1000, и определяет частоту кадров, с которой Flash плеер проигрывает ролик. Изменять это значение можно на лету. Код:
// изменить частоту кадров на 12 fps: stage.frameRate = 12; |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 327
|
ActionScript 3 полностью базируется на классах. Создавая классы, вы создаете переменные и функции (методы) которые связаны с экземпляром класса. В отличие от ActionScript 2 методы в ActionScript 3 сохраняют область видимости их класса, даже если вызываются из другого объекта, или через Function.call и Function.apply. Например:
Код:
package {
import flash.display.Sprite;
public class ClassScope extends Sprite {
public function ClassScope() {
traceThis(); // "Class Instance"
var obj:Object = new Object();
obj.traceThis = traceThis;
obj.traceThis(); // "Class Instance"
traceThis.call(new Sprite()); // "Class Instance"
}
public override function toString():String {
return "Class Instance";
}
public function traceThis():void {
trace(this);
}
}
}
|
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 327
|
Как и в ActionScript 1,2 в ActionScript 3 есть методы для динамического рисования в отображаемых объектах (movie clips, sprites, и т.п.), которые имеют свойство graphics (flash.display.Graphics). Свойство graphics выступает в роли специального слоя для рисования, который расположен под всеми дочерним клипами. Так же в ActionScript 3 добавлены новые методы для рисования прямоугольников (в том числе и со скругленными углами), окружностей и эллипсов:
Код:
// Нарисовать синий прямоугольник со скругленными углами: var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF); square.graphics.drawRoundRect(0, 0, 100, 50, 10, 10); square.graphics.endFill(); addChild(square); |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 327
|
В ActionScript 2 переменные со значениями объявленные в теле класса сохранялись в прототипе класса. Из-за этого возникали проблемы с переменными, которые являются ссылками на объекты (например массивы Array):
Код:
class myClass{
public var list:Array = [1,2,3];
}
var a = new myClass();
var b = new myClass();
trace(a.list === b.list); // true
В ActionScript 3 этой проблемы нет, такие переменные будут уникальны. |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 327
|
В ActionScript 2 событие MouseMove срабатывало глобально, неважно над каким клипом находилась мышка, любой listener от Mouse или любой мувиклип получали событие о перемещении мышки.
В ActionScript 3 для того чтобы получать события от мышки, нужно у интерактивного клипа (InteractiveObject такие как Sprites, MovieClips, Stage) добавить слушателя событий мышки (Listener), но события будут приходить только тогда, когда мышка находится над этим клипом. Для того чтобы получать события мышки в любом месте ролика, нужно добавить Listener к Stage. Код:
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); |
|
|||||
|
Регистрация: Aug 2004
Сообщений: 16
|
|
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 327
|
В ActionScript 3 появился новый класс SimpleButton (flash.display.SimpleButton). Теперь можно динамически с помощью ActionScript создавать кнопки (Button).
Код:
var myButton:SimpleButton = new SimpleButton(); Код:
myButton.upState = mySprite1; myButton.overState = mySprite2; myButton.downState = mySprite3; myButton.hitAreaState = mySprite4; |
|
|||||
|
Регистрация: Aug 2004
Сообщений: 16
|
Последний раз редактировалось Огион; 28.09.2006 в 15:48. |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 327
|
Один класс описывается в одном .as файле, так было в ActionScript 2 так остается и в ActionScript 3, но теперь есть возможность включать вспомогательные классы в тот же .as файл в дополнение к основному классу.
Вспомогательные классы описываются после блока package и видны только основному классу (или функции) в блоке package, или другим вспомогательным классам, описанным в этом же файле. Код:
package {
class MyClass {
function MyClass() {
var helper:MyHelper = new MyHelper();
}
}
}
class MyHelper {
function MyHelper() {
var helper:HelpersHelper = new HelpersHelper();
}
}
class HelpersHelper {
function HelpersHelper () {
}
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 07:54. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|