Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
1

Прелоадер при коде в классах

02.12.2013, 14:27. Просмотров 2267. Ответов 42
Метки нет (Все метки)

Подскажите пжста, как все-таки сделать правильно прелоадер. Есть мейн класс проекта Otkritka. В нем я пытаюсь создать екземпляр класса Otkritka_Main по окончанию прелоадера. Но прелоадер не работает и у меня при имитации всеравно сначала идет загрузка всего ролика на 0 кадре . Вот текст мейн класса:

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package
{
    import com.greensock.*;
    import com.greensock.easing.*;
    
    import flash.display.DisplayObject;
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.events.ProgressEvent;
    
    public class Otkritka extends Sprite
    {
            
        public function Otkritka()
        {
            
        loaderInfo.addEventListener(Event.COMPLETE,onComplate);
        loaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress);
        }
 
        private function onComplate(e:Event):void {
            trace("Загрузка прошла");
            if (loaderInfo.bytesTotal==loaderInfo.bytesLoaded) {
                
                var dedM:Otkritka_Main=new Otkritka_Main();
                addChild(dedM);
            }
            
        }
        
        private function onProgress(e:ProgressEvent):void {
            trace(loaderInfo.bytesLoaded/loaderInfo.bytesTotal);
        }
    
    
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 14:27
Ответы с готовыми решениями:

Прелоадер при коде в кадрах
Столкнулся с проблемой. Вобщем в 1 кадре у меня скрипт прелоадера: import...

Прелоадер
Кто та может сделать прелоадер ,что бы загружался и когда доходило да...

Прелоадер
package main { import flash.display.MovieClip; import...

Flash прелоадер
Счастье и мир. На сайте стоит пользовательский flash банер. Баннер не...

Прелоадер ООП
Здравствуйте. Мне нужно сделать прелоадер к игре. Все примеры которые я нашел...

42
TanaTiX
Модератор
2796 / 1650 / 168
Регистрация: 19.02.2011
Сообщений: 6,005
Завершенные тесты: 2
11.06.2014, 11:21 21
Цитата Сообщение от Wells77 Посмотреть сообщение
я на билдере работаю
Что-то в вашем примере я билдера не наблюдаю.
ИДЕ использует другой компилятор, в нем метатеги не поддерживаются.
0
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 11:26  [ТС] 22
Я не кидал всю структуру, но если нада - кину щас
0
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 11:32  [ТС] 23
Вот проект на билдере
0
Вложения
Тип файла: rar Прелоадер.rar (432.5 Кб, 8 просмотров)
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 13:15  [ТС] 24
Нашел цитату одного умного человека на форуме каком-то насчет прелоадера в флешбилдере: ействительно мета-тег Frame не работает. Как решение можно использовать ключ компилятора называемый frame.
Т.е. тебе нужно просто вписать в FB окно Project - Properties - ActionScript Compiler в поле Additional compiler arguments строчку -frame two Main, где Main имя класса, который будет создан после загрузки прелоадера. Подробно про ключ frame написано здесь и здесь. Класс Preloader и связанный с ним класс Main должны находится в корне проекта. Иначе выходит ошибка.

Добавлено через 3 минуты
Правда всеравно ошибка выскакивает:
ReferenceError: Error #1065: Переменная Main не определена.
at global/flash.utils::getDefinitionByName()
at Preloader/startup()
at Preloader/loadingFinished()
at Preloader/checkFrame()
Добавлено через 1 час 21 минуту
Чето я не пойму, почему дефинишн не видит класс Мейн??? Они с прелоадером в одной папке лежат!
1
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
11.06.2014, 13:19 25
Цитата Сообщение от Wells77 Посмотреть сообщение
Чето я не пойму, почему дефинишн не видит класс Мейн??? Они с прелоадером в одной папке лежат!
А Вы уверены, что Вы его правильно используете? Покажите эту часть кода.
0
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 13:36  [ТС] 26
Склоняюсь все к тому, что этот метод прелоадера не работает с билдером, а только с Дивелопером. Вобщем вот 2 класса моих:

Preloader.as - он же основной класс проекта по умолчанию:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package 
{
    import flash.display.*; 
    import flash.events.*;  
    import flash.text.TextField;
    import flash.utils.getDefinitionByName;
    
    [SWF(width=800,height=600,frameRate=30,backgroundColor=0xC254DE)]
    public class Preloader extends MovieClip 
    {
        private var _txt:TextField = new TextField();
        public function Preloader() 
        {
            if (stage) {
                stage.scaleMode = StageScaleMode.NO_SCALE;
                stage.align = StageAlign.TOP_LEFT;
                addChild(_txt);             
            }
            addEventListener(Event.ENTER_FRAME, checkFrame);
            loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);          
        }       
        
        private function progress(e:ProgressEvent):void 
        {                   
            _txt.text = loaderInfo.bytesLoaded.toString();
        }
        
        private function checkFrame(e:Event):void 
        {
            if (loaderInfo.bytesLoaded == loaderInfo.bytesTotal && currentFrame == totalFrames) 
            {               
                stop();
                loadingFinished();
            }
        }
        
        private function loadingFinished():void 
        {
            removeEventListener(Event.ENTER_FRAME, checkFrame);
            loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);           
            startup();
        }
        
        private function startup():void 
        {
            var mainClass:Class = getDefinitionByName("Main") as Class;
            stage.addChild(new mainClass() as DisplayObject);       
        }       
    }   
}
Main.as :
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
package
{
    import flash.display.MovieClip;
    
    public class Main extends MovieClip
    {
        public function Main()
        {
            var _dancer:Dancer=new Dancer();
            addChild(_dancer);
        }
    }
}
В билдере в настройках прописал ключик
-frame 1 Main
Вобщем вот еще сам проект на билдере:
0
Вложения
Тип файла: rar Прелоадер.rar (368.2 Кб, 5 просмотров)
TanaTiX
11.06.2014, 13:48
  #27

Не по теме:

Цитата Сообщение от Wells77 Посмотреть сообщение
ействительно мета-тег Frame не работает. Как решение можно использовать ключ компилятора называемый frame
К сожалению не могу проверить, т.к. билдер сейчас не установлен.

0
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 14:22  [ТС] 28
Вобщем что нарыл по этой проблеме: In case anyone reads this. It seems the problem was a compiler glitch in FB 4.5. Seems to be totally cleared up in 4.6...
Тоесть трабла скорее всего в самом компиляторе билдера именно версии 4.5. Попробую найти 4.6 проверить.
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
11.06.2014, 14:24 29
Цитата Сообщение от Wells77 Посмотреть сообщение
var mainClass:Class = getDefinitionByName("Main") as Class;
В Вашем случае Main нигде явно не указана в коде, поэтому компилятор не вкомпиливает ее код в проект. Для того, чтобы это обойти нужно где-нибудь явно указать это в проекте.
У себя в проекте я создаю экземпляр класса, в конструкторе которого создается массив:
ActionScript 3
1
2
3
4
5
6
7
8
9
public class LocRes
{
  public function LocRes()
  {
    var arr:Array = [
      Main
    ];
  }
}
после этого достаточно в любом месте проекта создать экземпляр данного класса
ActionScript 3
1
new LocRes();
Я делаю это первой строкой главного класса.
0
TanaTiX
Модератор
2796 / 1650 / 168
Регистрация: 19.02.2011
Сообщений: 6,005
Завершенные тесты: 2
11.06.2014, 14:31 30
Theoryofgames, а массив зачем? Достаточно просто
ActionScript 3
1
YouClass;
Ну и при таком подходе для Main-а теряется суть: он будет загружен в 1й кадр, а не во 2й, т.е. прелоадер будет работать не корректно.
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
11.06.2014, 15:22 31
Цитата Сообщение от TanaTiX Посмотреть сообщение
Theoryofgames, а массив зачем? Достаточно просто
да просто захотелось массив)
Цитата Сообщение от TanaTiX Посмотреть сообщение
Ну и при таком подходе для Main-а теряется суть: он будет загружен в 1й кадр, а не во 2й, т.е. прелоадер будет работать не корректно.
согласен, я просто рассказввал с чем связана ошибка getDefinitionByName
0
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 16:26  [ТС] 32
Такс, установил и Дивелопер и билдер 4.7. Теперь 2 вопроса возникло: как в иде выставить и где какой прогой редактировать скрипты? Ибо по умолчанию всеравно открывает классы 4.6 билдером? А по дивелоперу вопрос - почему ошибку выдает что не указано SDK и где его выставлять и как?
0
TanaTiX
Модератор
2796 / 1650 / 168
Регистрация: 19.02.2011
Сообщений: 6,005
Завершенные тесты: 2
11.06.2014, 16:28 33
Цитата Сообщение от Wells77 Посмотреть сообщение
А по дивелоперу вопрос - почему ошибку выдает что не указано SDK и где его выставлять и как?
Project>Properties>SDK там выбираете папку с SDK

Добавлено через 36 секунд
Цитата Сообщение от Wells77 Посмотреть сообщение
где какой прогой редактировать скрипты?
А чем дивелопер не устраивает?
0
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 16:32  [ТС] 34
Цитата Сообщение от TanaTiX Посмотреть сообщение
А чем дивелопер не устраивает?
Еще незнаю - первый раз его установил - вот щас и хочу посмотреть где удобнее будет по старинке на билдере или в дивелопере.
0
TanaTiX
11.06.2014, 16:33
  #35

Не по теме:

Wells77, удобнее всегда по старинке :)

0
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 17:48  [ТС] 36
Вобщем в дивелопере привы боре SDK ничего нету только No SDK configured. Жму Manage - там нету никаких установленых SDK для выбора. Что делать?

Добавлено через 1 минуту
В 2 словах вообще SDK это что? Это какие-то библиотеки именно Adobe Flash Professional CS6?

Добавлено через 27 минут
Если я правильно понял, сдк - это компилятор и я могу использовать в дивелопере даже компилятор билдера, указав к нему путь?

Добавлено через 43 минуты
Вроде все разобрался, все запускается. Но почему дивелопер не видит классов мувиков из фла файла? Как подвязать правильно или где он должен находится в какой папке, чтоб дивелопер его нормально видел?
0
TanaTiX
Модератор
2796 / 1650 / 168
Регистрация: 19.02.2011
Сообщений: 6,005
Завершенные тесты: 2
11.06.2014, 17:48 37
Цитата Сообщение от Wells77 Посмотреть сообщение
Жму Manage - там нету никаких установленых SDK для выбора. Что делать?
Клацнуть по кнопке для выбора папки - и выбрать папку, где находится SDK, все остальное подтянется автоматом.
Цитата Сообщение от Wells77 Посмотреть сообщение
Это какие-то библиотеки именно Adobe Flash Professional CS6?
Нет, это относится к флеш-технологии, а не к Adobe Flash Professional.
Цитата Сообщение от Wells77 Посмотреть сообщение
я могу использовать в дивелопере даже компилятор билдера, указав к нему путь?
Да
1
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 17:53  [ТС] 38
Цитата Сообщение от Wells77 Посмотреть сообщение
Вроде все разобрался, все запускается. Но почему дивелопер не видит классов мувиков из фла файла? Как подвязать правильно или где он должен находится в какой папке, чтоб дивелопер его нормально видел?
Как?
0
TanaTiX
Модератор
2796 / 1650 / 168
Регистрация: 19.02.2011
Сообщений: 6,005
Завершенные тесты: 2
11.06.2014, 18:04 39
Wells77, так в уроке это есть. Из fla компилируется swc, а в нем уже все есть.
0
Wells77
20 / 20 / 3
Регистрация: 16.10.2013
Сообщений: 295
11.06.2014, 18:14  [ТС] 40
Цитата Сообщение от TanaTiX Посмотреть сообщение
так в уроке это есть. Из fla компилируется swc, а в нем уже все есть.
Ага, тоесть при работе с дивелопером в любом случаэ нада с фла все символы заганять в swc, прикручивать до проекта дивелопера и тогда будет все видеть? А напрямую тянуть символы с библиотеки фла файла в дивелопере никак? Билдер напрямую так работает, но в билдере не срабатывает прелоадер так как в дивелопере - вот замкнутый круг
0
11.06.2014, 18:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2014, 18:14

Как удалить прелоадер?
День добрый. Нашел пример прелоадера. var loader:Loader = new Loader(); ...

Другой (внешний) прелоадер
Будет небольшая флеха(swf) к примеру размером 50кб, ее задача будет подгрузить...

Не хочет работать прелоадер
Всем привет. Делаю прелоадер в FD и IDE, но он никак не хочет работать (делаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru