![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 580
|
Сделал небольшую флэшку. Из библиотеки атачится несколько мувиков. Каждый мувик атачится в определенный момент времени, начиная от начала фильма и сразу проигрывается. Каждый мувик, как проиграется, останавливается командой stop();. Анимация большинства мувиков несложная, без альф и т.д. Внутри мувиков статический текст, небольшого объема(надпись, одно два слова) с параметром "сглаживание для читабельности". Время от начала фильма измеряет getTimer() В качестве "цикла" выбрано событие onEnterFrame root-а.
Частота проигрывания задана 30 кадров в секунду.
var mainPlayTime:Number = null;
var pkFlagTextPk:Boolean = false;
var pkFlagLine1:Boolean = false;
var pkFlagLine2:Boolean = false;
var pkFlagButHistory:Boolean = false;
var pkFlagButLevels:Boolean = false;
var pkFlagButSecrets:Boolean = false;
var pkFlagButMonsterBook:Boolean = false;
var pkFlagButTaroCards:Boolean = false;
var pkFlagButBosses:Boolean = false;
var pkFlagButMultic:Boolean = false;
var pkFlagButFAQ:Boolean = false;
var pkFlagButTech:Boolean = false;
var pkFlagButInteresting:Boolean = false;
var pkFlagButCommunity:Boolean = false;
_root.onEnterFrame = function():Void {
mainPlayTime = getTimer();
if (mainPlayTime>500 && pkFlagTextPk == false) {
this.attachMovie("textPainkiller", "textPk", this.getNextHighestDepth());
textPk._x = 7;
textPk._y = 5;
pkFlagTextPk = true;
}
if (mainPlayTime>1000 && pkFlagLine1 == false) {
this.attachMovie("lineTextPk", "lineTextPk1", this.getNextHighestDepth());
lineTextPk1._rotation = 90;
lineTextPk1._yscale = 100;
lineTextPk1._x = 200;
lineTextPk1._y = 45;
pkFlagLine1 = true;
}
if (mainPlayTime>1500 && pkFlagLine2 == false) {
this.attachMovie("lineTextPk", "lineTextPk2", this.getNextHighestDepth());
lineTextPk2._yscale = 120;
lineTextPk2._rotation = -180;
lineTextPk2._x = 7;
lineTextPk2._y = 320;
pkFlagLine2 = true;
}
if (mainPlayTime>2000 && pkFlagButHistory == false) {
this.attachMovie("butHistory", "butHistory", this.getNextHighestDepth());
butHistory._x = 20;
butHistory._y = 50;
pkFlagButHistory = true;
}
if (mainPlayTime>2300 && pkFlagButLevels == false) {
this.attachMovie("butLevels", "butLevels", this.getNextHighestDepth());
butLevels._x = 20;
butLevels._y = 75;
pkFlagButLevels = true;
}
if (mainPlayTime>2600 && pkFlagButSecrets == false) {
this.attachMovie("butSecrets", "butSecrets", this.getNextHighestDepth());
butSecrets._x = 20;
butSecrets._y = 100;
pkFlagButSecrets = true;
}
if (mainPlayTime>2900 && pkFlagButMonsterBook == false) {
this.attachMovie("butMonsterBook", "butMonsterBook", this.getNextHighestDepth());
butMonsterBook._x = 20;
butMonsterBook._y = 125;
pkFlagButMonsterBook = true;
}
if (mainPlayTime>3200 && pkFlagButTaroCards == false) {
this.attachMovie("butTaroCards", "butTaroCards", this.getNextHighestDepth());
butTaroCards._x = 20;
butTaroCards._y = 150;
pkFlagButTaroCards = true;
}
if (mainPlayTime>3500 && pkFlagButBosses == false) {
this.attachMovie("butBosses", "butBosses", this.getNextHighestDepth());
butBosses._x = 20;
butBosses._y = 175;
pkFlagButBosses = true;
}
if (mainPlayTime>3800 && pkFlagButMultic == false) {
this.attachMovie("butMultic", "butMultic", this.getNextHighestDepth());
butMultic._x = 20;
butMultic._y = 200;
pkFlagButMultic = true;
}
if (mainPlayTime>4100 && pkFlagButFAQ == false) {
this.attachMovie("butFAQ", "butFAQ", this.getNextHighestDepth());
butFAQ._x = 20;
butFAQ._y = 225;
pkFlagButFAQ = true;
}
if (mainPlayTime>4400 && pkFlagButTech == false) {
this.attachMovie("butTech", "butTech", this.getNextHighestDepth());
butTech._x = 20;
butTech._y = 250;
pkFlagButTech = true;
}
if (mainPlayTime>4700 && pkFlagButInteresting == false) {
this.attachMovie("butInteresting", "butInteresting", this.getNextHighestDepth());
butInteresting._x = 20;
butInteresting._y = 275;
pkFlagButInteresting = true;
}
if (mainPlayTime>5000 && pkFlagButCommunity == false) {
this.attachMovie("butCommunity", "butCommunity", this.getNextHighestDepth());
butCommunity._x = 20;
butCommunity._y = 300;
pkFlagButCommunity = true;
delete onEnterFrame;
}
};
var mainPlayTime:Number = null;
var pkFlagTextPk:Boolean = false;
var pkFlagLine1:Boolean = false;
var pkFlagLine2:Boolean = false;
var pkFlagButHistory:Boolean = false;
var pkFlagButLevels:Boolean = false;
var pkFlagButSecrets:Boolean = false;
var pkFlagButMonsterBook:Boolean = false;
var pkFlagButTaroCards:Boolean = false;
var pkFlagButBosses:Boolean = false;
var pkFlagButMultic:Boolean = false;
var pkFlagButFAQ:Boolean = false;
var pkFlagButTech:Boolean = false;
var pkFlagButInteresting:Boolean = false;
var pkFlagButCommunity:Boolean = false;
function timer():Void {
mainPlayTime = getTimer();
if (mainPlayTime>500 && pkFlagTextPk == false) {
_root.attachMovie("textPainkiller", "textPk", _root.getNextHighestDepth());
textPk._x = 7;
textPk._y = 5;
pkFlagTextPk = true;
}
if (mainPlayTime>1000 && pkFlagLine1 == false) {
_root.attachMovie("lineTextPk", "lineTextPk1", _root.getNextHighestDepth());
lineTextPk1._rotation = 90;
lineTextPk1._yscale = 100;
lineTextPk1._x = 200;
lineTextPk1._y = 45;
pkFlagLine1 = true;
}
if (mainPlayTime>1500 && pkFlagLine2 == false) {
_root.attachMovie("lineTextPk", "lineTextPk2", _root.getNextHighestDepth());
lineTextPk2._yscale = 120;
lineTextPk2._rotation = -180;
lineTextPk2._x = 7;
lineTextPk2._y = 320;
pkFlagLine2 = true;
}
if (mainPlayTime>2000 && pkFlagButHistory == false) {
_root.attachMovie("butHistory", "butHistory", _root.getNextHighestDepth());
butHistory._x = 20;
butHistory._y = 50;
pkFlagButHistory = true;
}
if (mainPlayTime>2300 && pkFlagButLevels == false) {
_root.attachMovie("butLevels", "butLevels", _root.getNextHighestDepth());
butLevels._x = 20;
butLevels._y = 75;
pkFlagButLevels = true;
}
if (mainPlayTime>2600 && pkFlagButSecrets == false) {
_root.attachMovie("butSecrets", "butSecrets", _root.getNextHighestDepth());
butSecrets._x = 20;
butSecrets._y = 100;
pkFlagButSecrets = true;
}
if (mainPlayTime>2900 && pkFlagButMonsterBook == false) {
_root.attachMovie("butMonsterBook", "butMonsterBook", _root.getNextHighestDepth());
butMonsterBook._x = 20;
butMonsterBook._y = 125;
pkFlagButMonsterBook = true;
}
if (mainPlayTime>3200 && pkFlagButTaroCards == false) {
_root.attachMovie("butTaroCards", "butTaroCards", _root.getNextHighestDepth());
butTaroCards._x = 20;
butTaroCards._y = 150;
pkFlagButTaroCards = true;
}
if (mainPlayTime>3500 && pkFlagButBosses == false) {
_root.attachMovie("butBosses", "butBosses", _root.getNextHighestDepth());
butBosses._x = 20;
butBosses._y = 175;
pkFlagButBosses = true;
}
if (mainPlayTime>3800 && pkFlagButMultic == false) {
_root.attachMovie("butMultic", "butMultic", _root.getNextHighestDepth());
butMultic._x = 20;
butMultic._y = 200;
pkFlagButMultic = true;
}
if (mainPlayTime>4100 && pkFlagButFAQ == false) {
_root.attachMovie("butFAQ", "butFAQ", _root.getNextHighestDepth());
butFAQ._x = 20;
butFAQ._y = 225;
pkFlagButFAQ = true;
}
if (mainPlayTime>4400 && pkFlagButTech == false) {
_root.attachMovie("butTech", "butTech", _root.getNextHighestDepth());
butTech._x = 20;
butTech._y = 250;
pkFlagButTech = true;
}
if (mainPlayTime>4700 && pkFlagButInteresting == false) {
_root.attachMovie("butInteresting", "butInteresting", _root.getNextHighestDepth());
butInteresting._x = 20;
butInteresting._y = 275;
pkFlagButInteresting = true;
}
if (mainPlayTime>5000 && pkFlagButCommunity == false) {
_root.attachMovie("butCommunity", "butCommunity", _root.getNextHighestDepth());
butCommunity._x = 20;
butCommunity._y = 300;
pkFlagButCommunity = true;
clearInterval(time);
}
}
var time:Number = setInterval(timer, 30);
Вопросы: Как это можно объяснить( что пропали тормоза при увеличении fps)? Может подскажете что в моем коде неправильно( неоптимально)? И как вообще рашается эта задача: вывод на экран мувиков в определенное время от начала проигрывания фильма? |
|
|||||
|
Banned
[+1 16.05.2006]
[++1 16.05.2006] [+ 1 21.05.06] [++ за хамство] [+1 21.05.2006] Регистрация: Dec 2003
Сообщений: 3,925
|
Покадровой проверкой. Тормозит не сам onEnterFrame, а навешивание на него лишнего. Если тебе надо не сильно загружающий машину объект вывести -- это тоже вариант.
|
|
|||||
|
Регистрация: Feb 2006
Сообщений: 580
|
А как организуется покадровая проверка?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|