Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/14: Рейтинг темы: голосов - 14, средняя оценка - 4.50
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
AS 3.0

Создание прелоадера для приложения вконтакте

05.07.2012, 14:30. Показов 2997. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь счас придумать, как написать прелоадер к своему пиложению. В связи с этим возникли такие проблеммы:
Если я выношу прелоадер в отдельный swf файл, сразу появляются проблеммы с API вконтакте, т.к. там есть строчка:
ActionScript 3
1
flashVars = stage.loaderInfo.parameters as Object;
которая работает только если вызывается со сцены... как только моя программа оказывается Child-ом или если эта строчка находится внутри любого объекта, за исключением Document Class,
при выполнении появляется ошибка:

ActionScript 3
1
2
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
    at MainV2_fla::MainTimeline/frame1()
т.е. получается что мне надо либо передать её из прелоадера в своё приложение (передать объект из 1 swf во второй, причём без всяких посредников), либо если я подключаю класс для взаимодействие с API вконтакта прямо в прелоадере, то надо как-то наладить его взаимодействие с остальными классами, используемыми в основной программе. (по сути API вконтакта у меня счас только получает данные о пользователе и пишет/читает 3 переменные хранящиеся на сервере, данные этих 3-х переменных и используют остальные мои классы),
ещё вариант, заставить эту строчку работать адекватно из под Child-а... Но с этим у меня пока тоже проблеммы, т.к. parent почему-то не помог

Есть другой вариант, который мне хотелось бы реализовать гораздо сильнее, но я счас очень смутно представляю как это сделать. Дело в том, что 95% веса моего приложения это MovieClip классы, хранящиеся в библиотеке, экземпляры которых я буду динамически создавать во время работы приложения. Если бы вынести эту библиотеку в отдельный swf файл, а потом подгружать её в основную программу, то было бы просто прекрасно... Однако я незнаю как сделать это таким образом, чтобы в последствии можно было обратиться к классам этой библиотеки по имени, для создания экземпляра?


З.Ы. вариант с созданием прелоадера в первом кадре или первой сцене я пока не рассматриваю, т.к. он нарушит мне всю предполагаемую структуру приложения, да и выглядеть будет код очень криво
(ещёя кстати не уверен, в какой момент флеш подгружает библиотеку, до проигрывания первого кадра или после?)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2012, 14:30
Ответы с готовыми решениями:

Создание внешнего прелоадера для загрузки нескольких swf использующих API VK
День добрый. Проект разбит на несколько swf фалов, в каждом из них используется API VK. При создании прелоадера подобного типа: package ...

Приложения ВКонтакте
Хотелось бы подробно узнать о приложениях вконтакте. Какие особенности? Где хранятся сведения о юзере (счет в игре, деньги и т.п.)? ...

Взаимодействие приложения на AS с API ВКонтакте
Здравствуйте! Можете понятным языком рассказать, как подключить API ВКонтакте к своему приложению. Прочитал документацию ВК, облазил...

9
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
05.07.2012, 15:36
Событие ADDED_TO_STAGE отправляется тогда, когда объект добавляется на сцену, при этом у объекта свойству stage присваивается в качестве значения ссылка на Stage вместо null.

Цитата Сообщение от Varlock Посмотреть сообщение
Если бы вынести эту библиотеку в отдельный swf файл
Нет смысла грузить один единственный swf. Если бы их было N-е кол-во и грузились они только по мере необходимости - другое дело. Но это отдельный разговор.
1
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
05.07.2012, 16:51  [ТС]
теперь ясно почему оно не работало в child-ах и классах, но проблемму я пока не понял как решить, ведь я так понял, что ADDED_TO_STAGE диспатчит сам объект в момент добавления на сцену, а данные мне надо получить внутри самого объекта, т.е. в самом примитивном виде прелоадер выглядит у меня так:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import flash.display.Loader;
import flash.events.Event;
 
var loader : Loader = new Loader ();
 
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, onComplete);
loader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, onProgress);
 
loader.load(new URLRequest ("MainV2.0.swf")); // собственно MainV2.0.swf это само приложение.
 
function onComplete(e: Event) : void 
{
    removeChild(bar); // bar это мувиклип в виде прямоугольника, чтобы не на пустой экран любоваться
    addChild(loader);
}
 
 
function onProgress(e: ProgressEvent) : void 
{
    bar.scaleX = (e.target.bytesLoaded/e.target.bytesTotal); // меняем масштаб по Х у bar от 0 до 1.
}
С ADDED_TO_STAGE, он будет выглядеть я так понимаю вот так:

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
import flash.display.Loader;
import flash.events.Event;
 
var loader : Loader = new Loader ();
 
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, onComplete);
loader.contentLoaderInfo.addEventListener (ProgressEvent.PROGRESS, onProgress);
 
loader.addEventListener(Event.ADDED_TO_STAGE, onAdded); // неуверен нужно ли тут contentLoaderInfo, по моему нет т.к. добавляем на сцену мы уже сам лоадер.
 
loader.load(new URLRequest ("MainV2.0.swf")); // собственно MainV2.0.swf это само приложение.
 
function onComplete(e: Event) : void 
{
    removeChild(bar); // bar это мувиклип в виде прямоугольника, чтобы не на пустой экран любоваться
    addChild(loader);
}
 
 
function onProgress(e: ProgressEvent) : void 
{
    bar.scaleX = (e.target.bytesLoaded/e.target.bytesTotal); // меняем масштаб по Х у bar от 0 до 1.
}
 
function onAdded(e: Event) : void 
{
    //и вот тут я незнаю что написать
}
как мне передать в мой swf файл, что он был успешно добавлен на сцену и толко теперь пора обращаться к stage.loaderInfo.parameters ?
или как мне передать сами stage.loaderInfo.parameters в мой загруженный файл, чтобы он смог принять их и обработать?
или я неправильно понял, кем и куда диспатчится ADDED_TO_STAGE?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
05.07.2012, 17:40
Писать в классах и подписаться на вышеуказанное событие в конструкторе. Прочая инициализация в обработчике и дальше по цепочке логических событий.
0
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
05.07.2012, 17:51  [ТС]
что-то туплю, никак не соображу что ты предлагаешь
можешь пояснить как-нибудь ещё?
обработчик ADDED_TO_STAGE в прелоадере или в MainV2.0.swf?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
05.07.2012, 18:30
Varlock, посмотри тут
0
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
05.07.2012, 21:04  [ТС]
урок интересный, спасибо жаль, не законченный...
счас пробую поставить FlashDevelop, посмотрю с чем его едят...

правда из прочитанного у меня выходит, что в итоге прелоадер и само приложение окажутся в одном swf файле, в первом и 2-ом кадре? тогда в принцыпе понятно... хотя средствами самого флеша мне ненравится как это выглядит.. может FlashDevelop поможет в этом...
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
05.07.2012, 21:20
Varlock, да, там описан стандартный внутренний прелоадер. Если речь об обмене данными с другими swf - мне это не мешало. Если все же найдутся какие-то причины его не использовать - никто не мешает написать свой.
В чем необходимость не использовать 2 кадра?
0
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
05.07.2012, 22:15  [ТС]
необходимости особой, если задуматься нет, просто внутри FlashCS5 то выглядит на мой взгляд не особо красиво когда и прелоадер и контент на одной линейке времени и нельзя их по отдельности скомпилировать...
если реализовать всё это классами, в FlashDevelop-ере, то наверно будет хорошо и так мне по крайней мере пока нравится как в нём проект выглядит

я правда ещё не смотрел, как там работать с swc файлами, в которые мне придётся всю графическую часть переносить...
там есть какие-то отличия от fla файла?
или можно просто
ActionScript 3
1
import myFile.swc;
и сразу обращаться к классам, которые находились в библиотеке fla файла из которого он был скомпилирован?
или он сам компилируется как класс, а находящиеся в библиотеке классы, как его методы?

вобще счас вопросов пока возникает ещё больше чем было но для начала надо чучуть поэксперементировать с переносом того, что уже есть... а там часть вопросов я думаю сама отпадёт из насущных счас только как к классам внутри swc файла обращаться
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
05.07.2012, 22:22
Нет, swc не импортируются (как и в ИДЕ). Правой кнопкой по swc и add to libary
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2012, 22:22
Помогаю со студенческими работами здесь

Создание бота для приложения вконтакте ''Poker Shark"
Здравствуйте, хочу написать бота для приложения вконтакте ''Poker Shark". Не для того чтоб бот играл и выигрывал, а чтоб выполнял там одно...

Приложения для ВКонтакте на Windows
Есть приложение, чтобы можно было читать и отвечать на сообщения с вк не заходя на сайт?

Бот для приложения вконтакте
Я хочу написать бота для приложения вконтакте . Схема такова с edit 1 и edit2 посылает id юзера и его auth_key. Ну вот проблема не знаю API...

Выбор типа приложения для работы с ВКонтакте
Раотаю в Microsoft Visual Studio 2015 Здравствуйте, пытаюсь начать писать программу для вк. Начинала на многих программах... То на эту...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru