Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Статьи (http://www.flasher.ru/forum/forumdisplay.php?f=101)
-   -   Знакомство с Flash 9 и ActionScript 3.0 на примере создания аркадной игры (http://www.flasher.ru/forum/showthread.php?t=83431)

DRAGOnoid 25.10.2008 14:39

а примерчики всёравно хорошие ;) спасибо

terbooter 10.11.2008 12:29

А вот интересно, если я игруху сделаю на базе этого туториала никто не обидется?
Могу денег сколько-то заплатить =)

etc 10.11.2008 12:36

Ну прям с тем же кодом я бы не стал.

terbooter 10.11.2008 22:01

Почему?

etc 10.11.2008 22:47

Потому что этот код, мягко говоря, не соответствует современному AS3.

terbooter 11.11.2008 08:43

Это не проблема, я все равно все перепишу по-своему =)
Главное чтобы было с чего начать.

root.Unknown 27.12.2008 07:11

В общем есть проблема с прелоадером... Прочитав всю тему с 1-й до этой страници я выправил несколько ошибок, но все таки некоторые остались, я использую Flash CS3, 9-ка...
Опишу все как есть и сколько ошибок и каких выбевает на этом не легком пути к истине...

Значит в fl файле 3-и кадра, 1-й кадр прелоадер, 2-й кадр кнопка Start, 3-й кадр сцена с игрой...

Расположил на первом кадре MovieClip под названием "preloader" в котором текстовое поле с id: txt, ну и стоит Dynamic Text, и MovieClip под названием "progressbar" с Instanse of: progressbar
В MovieClip-е с названием "preloader" поставил в Linkage... галочку Export for AS, прописал класс: main.preloader, это внешний файл лежащий в папке main с названием preloader.as
На первом кадре в главной сцене(root), во фрейме написал stop();

Код на внешний файл preloader.as

Код AS3:

package main {
        import flash.display.MovieClip;
        import flash.events.*;
 
        dynamic public class preloader extends MovieClip {
                public function preloader() {
                        // Нужно периодически вызывать функцию Update, которая будет обновлять процент загрузки
                        // Используем старый-добрый onEnterFrame с учетом событий AS3
                        addEventListener(Event.ENTER_FRAME, Update);
                }
 
                public function Update(e : Event):void {
                        var bytesLoaded:Number = stage.loaderInfo.bytesLoaded;
                        var bytesTotal:Number = stage.loaderInfo.bytesTotal;
                        var s:String = "";
                        var percent:Number = 0;
                        if (bytesTotal>0){
                                percent = Math.floor(bytesLoaded/bytesTotal*100);
                                s = percent+"% ("+
                                Math.round(bytesLoaded/1024)+"kb / "+
                                Math.round(bytesTotal/1024)+"kb)";
                        }
                        this.txt.text="Loading... "+s;
                        this.progressbar.gotoAndStop(percent+1);
                        // Если полностью загрузились, то переходим на второй кадр
                        if (bytesLoaded==bytesTotal || bytesTotal==0){
                        removeEventListener(Event.ENTER_FRAME, Update);
                        if (parent is MovieClip) {
        MovieClip(parent).play();
                                }
                        }
                }
        }
}

Всё прально вроде бы, но при компиляции выскакивает ошибка:
preloader.as Line 1 1046: Type was not found or was not a complite-time constant: TextField.

Причем здесь TextField, я же написал dynamic public class preloader extends MovieClip { и выбрал для текстового поля Dynamic text, указал в нем ID: txt )))))

В общем думал справлюсь сам, но после 4 часов над исправлением ошибок одна за другой замучался, тут я уже пришел в тупик, что оно от меня хочет?
Подскажите пожалуйста, уже нету сил с ним боротся, код по прочтению всей темы я так понял писался для FL v. 8... Повторюсь, у меня 9-ка...

Добавлено через 5 часов 18 минут
Разобрался сам, опять моя ошибка...
Забыл написать import flash.text.TextField; Хотя в примере игры, в файле preloader.as автора этой строки нету )))))

Хотя у меня еще возник один вопрос, при компеляции файла, в Flash CS3 компилирую Ctrl+Enter, в окне Player-а в меня View > Simulate Download показывается что файл грузится... но в самом флег окне загрузка прелоадера, то есть отображения мувиклипа самого показывается только тогда, когда % дошел до 80 и только после 80, прелоадер отображается и эта полоска загрузки добегает четверь всей длины, у меня вопрос, почему эта полоска загрузки не с 0% начинает отображаться?

MerlinTwi 28.12.2008 23:53

А какой вес первого кадра? Может там все классы игры и сидят, потому-то и грузится он долго, т.к. большой?
"Export classes in frame" стоит 2 ?

root.Unknown 29.12.2008 05:33

хм... а где его ставить или посмотреть вообще?
Если на любом MovieClip-е нажать правой кнопкой мыши и выбрать Linkage..., то там можно выбрать только
Class: name
BaseClass: flash.Display.MoiveClip

Linage: Export for ActionScript (стоит галочка)
Export for runtime sharing
Export in first Frame (стоит галочка)

а где прописать "Export classes in frame" "2" не знаю... :

musat 29.12.2008 11:38

root.Unknown
Publish Settings -> Flash -> (ActionScript 3.0) Settings -> Export classes in frame


Часовой пояс GMT +4, время: 00:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.