Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.01.2013, 00:13
BBOY Ильич вне форума Посмотреть профиль Отправить личное сообщение для BBOY Ильич Найти все сообщения от BBOY Ильич
  № 11  
Ответить с цитированием
BBOY Ильич
 
Аватар для BBOY Ильич

Регистрация: Nov 2007
Сообщений: 256
Записей в блоге: 1
Отправить сообщение для BBOY Ильич с помощью ICQ
Документ-классом должен быть, кажись, тот, где [Frame(factoryClass="")] прописан...

Старый 13.01.2013, 01:11
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 12  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Отдельным swf файлом вообще. Это нормальная практика, когда делают небольшой swf чисто для загрузки другого. И не нужно будет никаких фактори классов или второго кадра.
Это просто загрузить флешку Loader`ом, и по окончанию загрузки (Event.COMPLETE) добавить загруженное через addChild?

Цитата:
Сообщение от Wolsh Посмотреть сообщение
Этот код что, компилится? Где аргументы функции?

А Вы точно сделали preloader документ-классом?
Так он мне ошибку не выдавал, так как до класса preloader дело даже не доходило. Получается, что эта строка в моем случае ничего не делает:
[Frame(factoryClass = "preloader")]

Так класс документа вообще в IDE там де прописываю должен быть preloader? Просто я думал что строка [Frame(factoryClass = "preloader")] как бы передает управление классу preloader, а в конце прелоадера возвращается назад.

Добавлено через 41 минуту
Нашел причину: во-первых, конечно же, preloader должен был быть классом документа, но без это были и другие ошибки.
Постоянно вылазила ошибка Variable frameq is not defined, где frameq имя класса. Решение этой проблемы оказалось каким-то странным. Вместо такой записи:
Код AS3:
var mainClass:Class = getDefinitionByName("frameq") as Class;
var mainC = new mainClass();
addChild(mainC as DisplayObject);
Надо написать такую
Код AS3:
frameq
var mainClass:Class = getDefinitionByName("frameq") as Class;
var mainC = new mainClass();
addChild(mainC as DisplayObject);
Не могу понять вообще, почему так работает. Обычно пытаюсь всегда понимать то, что написал, но тут исключение). Если кто прошаренный, интересно было бы узнать).

Старый 13.01.2013, 04:01
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 13  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ничего странного. Эта запись, frameq, говорит компилятору что данный библиотечный класс будет использоваться, то есть фактически Вы его импортируете (умный компилятор не импортирует классы, которые не используются в коде, даже если Вы напишите руками импорт; использование через getDefinitionByName компилятором не распознается, так как там используется не класс, а только строка с его именем).
Цитата:
Просто я думал что строка [Frame(factoryClass = "preloader")] как бы передает управление классу preloader
Вообще-то эта строка говорит "я — кадр мувиклипа класса Прелоадер". Однако же Прелоадер должен быть точкой входа в программу, нет? А так —
Цитата:
Получается, что эта строка в моем случае ничего не делает: [Frame(factoryClass = "preloader")]
Точка входа не может быть частью чего-то бОльшего, например кадром мувиклипа. Документ-класс включает в себя всё остальное. Здесь фишка лишь в том, чтобы "всё остальное" не грузилось в первый кадр.
Цитата:
Так он мне ошибку не выдавал, так как до класса preloader дело даже не доходило.
Компилятор(!) должен был ошибку выдавать, то есть дело не должно было дойти до свф-файла. Включите строгий режим компиляции. А впрочем, у Вас наверное и сам класс Прелоадер не вкомпиливался, так как классом документа был другой, и Прелоадер в нем уже не упоминался, то есть был "не нужным" и компилятор его даже не смотрел.
__________________
Reality.getBounds(this);

Старый 13.01.2013, 12:17
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 14  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от TurboDizel Посмотреть сообщение
Это просто загрузить флешку Loader`ом, и по окончанию загрузки (Event.COMPLETE) добавить загруженное через addChild?
Именно так.

Старый 13.01.2013, 14:50
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 15  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Ничего странного. Эта запись, frameq, говорит компилятору что данный библиотечный класс будет использоваться, то есть фактически Вы его импортируете (умный компилятор не импортирует классы, которые не используются в коде, даже если Вы напишите руками импорт; использование через getDefinitionByName компилятором не распознается, так как там используется не класс, а только строка с его именем).
Вообще-то эта строка говорит "я — кадр мувиклипа класса Прелоадер". Однако же Прелоадер должен быть точкой входа в программу, нет? А так — Точка входа не может быть частью чего-то бОльшего, например кадром мувиклипа. Документ-класс включает в себя всё остальное. Здесь фишка лишь в том, чтобы "всё остальное" не грузилось в первый кадр.
Компилятор(!) должен был ошибку выдавать, то есть дело не должно было дойти до свф-файла. Включите строгий режим компиляции. А впрочем, у Вас наверное и сам класс Прелоадер не вкомпиливался, так как классом документа был другой, и Прелоадер в нем уже не упоминался, то есть был "не нужным" и компилятор его даже не смотрел.
Вот теперь хоть понятно что делает строчка frameq и тег Frame.
А вот когда дело начало до прелоадера доходить, то компилятор все ошибки показал).

И когда я говорил, что нашел причину и якобы решил проблему, то видимо я рано сделал выводы). У меня есть класс frame, и класс preloader. preloader документ-класс. Он по-идее должен выполнится первым, а в итоге его содержимое появляться только после загрузки frame. Т.е. как Вы я так понял и говорили: 'Здесь фишка лишь в том, чтобы "всё остальное" не грузилось в первый кадр'.
Если ещё кому-то не надоело отвечать на мои вопросы, то надеюсь кто-то скажет, как не дать загрузить frame раньше, чем само содержимое документ-класса).
frame
Код AS3:
[Frame(factoryClass = "preloader")]
public class frameq extends MovieClip {
var BG = new bg();
public function frameq() {
	addChild(BG);
	BG.x = 0;
	BG.y = 0;
}
preloader
Код AS3:
public class preloader extends MovieClip
{
	private var BTN:MovieClip = new btn();
	public function preloader() {
		addChild(BTN);
		BTN.x = 300;
		BTN.y = 300;
		BTN.addEventListener(MouseEvent.CLICK, clickb);
	}
 
	function clickb(e:MouseEvent):void {
		frameq
		var mainClass:Class = getDefinitionByName("frameq") as Class;
		var mainC = new mainClass();
		addChild(mainC as DisplayObject);
	}
 
}

Старый 13.01.2013, 17:48
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 16  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
А вот когда дело начало до прелоадера доходить, то компилятор все ошибки показал).
Но правда в том, что документ-классом должен быть не прелоадер. Этот эксперимент показал, что Ваш компилятор не понимает тега [Frame].
Он вообще не компилит прелоадер, если тот не объявлен документ-классом.
А должен был прочитать это в теге [Frame].
Вы точно компилируете с помощью flex_sdk?
И вот это Ваше отсутствие пакетов в оформлении классов — это так и есть, или Вы для нас старательно скопировали код без объявлений пакетов?
__________________
Reality.getBounds(this);

Старый 13.01.2013, 18:34
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 17  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Но правда в том, что документ-классом должен быть не прелоадер. Этот эксперимент показал, что Ваш компилятор не понимает тега [Frame].
Он вообще не компилит прелоадер, если тот не объявлен документ-классом.
А должен был прочитать это в теге [Frame].
Вы точно компилируете с помощью flex_sdk?
И вот это Ваше отсутствие пакетов в оформлении классов — это так и есть, или Вы для нас старательно скопировали код без объявлений пакетов?
Просто чтобы сообщение не было на всю страницу, пытаюсь убирать очевидные вещи).
В итоге всё сделал через Loader как предлагал caseyryan.
Всем спасибо за помощь, я бы разобрался с тегом Frame, но пока Loader более чем устраивает).

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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