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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.01.2013, 19:45
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 1  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
По умолчанию Запустить главный класс со второго кадра

Есть в общем почти готовая игра, которая начинается с класса main. Решил сделать прелоадер, который надо было сделать ещё перед игрой, и чего-то даже не знаю, каким образом после того как прелоадер на первом кадре отработал, запустить на втором кадре класс main? Возможно это вообще делается по другому, и было бы не плохо узнать как именно).

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

Регистрация: Dec 2006
Сообщений: 1,764
не лучший мануал: http://www.8bitrocket.com/2008/04/22...-in-flash-cs3/
__________________
а за окном атлантический океан!

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Что мешает сделать отдельный прелодер?

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

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Что мешает сделать отдельный прелодер?
В смысле отдельный? Я наверное что-то элементарное сейчас пропускаю, но реально что-то не могу понять.
Сам класс main должен быть на втором кадре ведь, если он будет на первом, то он начнет сразу загружать все мувики использующиеся там, и прелоадер даже если будет в начале появится только после того, как весь main загрузится. На первом кадре проверяется общее количество загруженных байт и общее их количество, и если совпадает то переход на второй кадр, а на втором кадре код, чтобы запустить класс main и начать игру. Просто Вы наверное какой-то другой способ спрашиваете, который я не понял).

Цитата:
Сообщение от NikolyA Посмотреть сообщение
Я так понял, что там всё так же по кадрам без отдельных as файлов. Просто англ тяжко идет.

Старый 12.01.2013, 20:54
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 5  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Main
Код AS3:
package {
	import flash.display.Sprite;
 
	[SWF(width = "800", height = "600", frameRate = "30")]
 
	/**
	 * @author SlavaRa
	 */
	[Frame(factoryClass="Preloader")]
	public final class Main extends Sprite {
 
		public function Main():void {
			super();
		}
	}
}
Preloader
Код AS3:
package {
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.utils.getDefinitionByName;
 
	/**
	 * @author SlavaRa
	 */
	public class Preloader extends MovieClip {
 
		public function Preloader() {
			super();
			this.configureStage();
			this.addListeners();
			//TODO: this.showAsset();
		}
 
		private function configureStage():void {
			super.stage.scaleMode = StageScaleMode.NO_SCALE;
			super.stage.align = StageAlign.TOP_LEFT;
		}
 
		private function addListeners():void {
			super.addEventListener(Event.ENTER_FRAME, this.onSuperEnterFrame);
			super.loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onIoError);
			super.loaderInfo.addEventListener(ProgressEvent.PROGRESS, this.onProgress);
		}
 
		private function onSuperEnterFrame(event:Event):void {
			if (super.currentFrame == super.totalFrames) {
				super.currentFrame;
				super.stop();
				this.removeListeners();
				//TODO: this.hideAsset();
				this.startup();
			}
		}
 
		private function onIoError(event:IOErrorEvent):void {
			trace("error:", event.text);
		}
 
		private function onProgress(event:ProgressEvent):void {
			//TODO: this.updateAsset();
		}
 
		private function removeListeners():void {
			super.removeEventListener(Event.ENTER_FRAME, this.onSuperEnterFrame);
			super.loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, this.onIoError);
			super.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, this.onProgress);
		}
 
		private function startup():void {
			const c:Class = getDefinitionByName("Main") as Class;
			super.addChild(DisplayObject(new c()));
		}
	}
}
__________________
местонахождение

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

Регистрация: Apr 2010
Сообщений: 137
СлаваRa, попробовал, покопался в инете, вроде и код почти такой же как у Вас везде, всё должно работать, но почему-то класс main сам себе так дальше и загружается, будто я ничего и не менял.
main:
Код AS3:
[Frame(factoryClass="preloader")]
//переменные
public class main extends MovieClip {
   public function main() {
      //функции и т.д.
   }
}
//и тут функции
preloader:
Код AS3:
package  
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.utils.getDefinitionByName;
	/**
	 * ...
	 * @author Turbo-Dizel
	 */
	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():void {
			var mainClass:Class = Class(getDefinitionByName("main"));
			var mainClassObj:Object = new mainClass();
			addChild(mainClassObj as DisplayObject);
		}
 
	}
 
}

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Если бы все было также, то и работало бы как надо, какой-то странный у вас подход к оформлению кода(.
__________________
местонахождение

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

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от СлаваRa Посмотреть сообщение
Если бы все было также, то и работало бы как надо, какой-то странный у вас подход к оформлению кода(.
Ну тот код, который я выложил, должен был загрузить класс preloader. Этот класс добавляет на сцену мувик, и проверяет его на клик мыши. Если кликнули, то "возвращаемся" в main. Просто сам прелоадер ещё не делал, а для проверки "кнопку" поставил.
Он же по идее ждать моего клика должен.
А что не так с оформлением кода?)

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от TurboDizel Посмотреть сообщение
В смысле отдельный? Я наверное что-то элементарное сейчас пропускаю, но реально что-то не могу понять.
Отдельным swf файлом вообще. Это нормальная практика, когда делают небольшой swf чисто для загрузки другого. И не нужно будет никаких фактори классов или второго кадра.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
BTN.addEventListener(MouseEvent.CLICK, clickb);
//.....
function clickb():void {
Этот код что, компилится? Где аргументы функции?

А Вы точно сделали preloader документ-классом?
__________________
Reality.getBounds(this);

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

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

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


 


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


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