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

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

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

Регистрация: Feb 2010
Сообщений: 95
По умолчанию Прелоадер работает неверно

Здраствуйте.

По этой инструкции - http://asgamer.com/2009/making-a-com...-the-preloader - создавал прелоадер, но добится результата так и не смог

Работаю с Flash CS4 и Flash Develop. Есть игра, нужен прелоадер. В главном таймлайне изначально ничего не было; последовательность моих действий такова:

1) Создал анимацю на 100 кадров и привязал к классу game.ThePreloader (чуть измененный класс с инструкции):

Код AS3:
package game
{
	import flash.display.LoaderInfo;
	import flash.display.MovieClip;
	import flash.events.*;
 
	public class ThePreloader extends MovieClip
	{
 
		public var ldrInfo:LoaderInfo;
 
		public function ThePreloader(ldrInfo:LoaderInfo = null)
		{
			this.ldrInfo = ldrInfo;
 
			addEventListener(Event.ENTER_FRAME, checkLoad);
		}
 
		private function checkLoad (e:Event) : void
		{
			if (ldrInfo.bytesLoaded == ldrInfo.bytesTotal && ldrInfo.bytesTotal != 0)
			{
				dispatchEvent(new Event("loadComplete"));
				phaseOut();
			}
 
			updateLoader((ldrInfo.bytesLoaded / ldrInfo.bytesTotal) * 100);
		}
 
		private function updateLoader(num:Number) : void
		{
			trace(Math.floor(num));
			gotoAndStop(Math.floor(num));
		}
 
		private function phaseOut() : void
		{
			removeEventListener(Event.ENTER_FRAME, checkLoad);
			phaseComplete();
		}
 
		private function phaseComplete() : void
		{
			dispatchEvent(new Event("preloaderFinished"));
		}
	}
}
2) Всем MovieClip*ам, которые экспортированы в классы, снял галочку загрузки в первом кадре.

3) Создал MovieClip и поместил туда все MovieClip'ы с предыдущего пункта. Вопрос - изображения и спрайты, не экспортированные в классы, сюда помещать не надо?

4) Таким образом исправил конструктор в главном классе игры Main и добавил пару функций, в соответсвии с написанным по ссылке:

Код AS3:
		private var preloader:ThePreloader;
 
 
		public function Main()
		{
			preloader = new ThePreloader(this.loaderInfo);
			stage.addChild(preloader);
			preloader.addEventListener("loadComplete", loadAssets);
			preloader.addEventListener("preloaderFinished", playGame);
		}
 
		private function loadAssets(e:Event):void
		{
			this.play();
		}
 
		public function playGame(e:Event) :void
		{
			stage.removeChild(preloader);
 
			//дальше код, который был в старом конструкторе
		}
5) Создал слой в главном таймлайне, первый и третий кадр - стоп. Создал второй слой, с AssetHolder'ом (тот, в котором хранятся все MovieClip'ы) во втором кадре.


Кажется, все.

Результат: сначала экран пустой, тогда при 60% появляется прелоадер с соответвующей позицией анимации; по результату его работы появляется меню игры, но без фона и кнопок, видны лишь только шарики, появляющиеся на экране рандомно (как я понял, видны только те MovieClip*ы, к которым я сам создавал класс).

Буду очень благодарен, если кто-то поробует разобратся и подсказать, в чем я ошибся.

И еще - в Publish Settings стоит экспорт классов в первом кадре, это никак не влияет на MovieClip'ы со снятой галочкой экспорта?

По ходу написания этого заметил такое - после прелоадера в меню видны только те спрайты, к которым я явно содавал класс. Те элементы, которым я поставил отметку экспорта в AS, но не создал класса самостоятельно, не видны. Может быть, проблема связана с этим?

Добавлено через 7 минут
Извините, в последнем абзаце ошибся. Обьяснить то, почему видна только часть спрайтов, все-таки не могу (для них тоже класс не создавался).

Добавлено через 32 минуты
Правильно ли, что у меня все изображения (текстуры) не экспортированны в классы? Хотя, их экспорт, кажется, не помогает.

Добавлено через 3 часа 30 минут
heeeelp!

Свожу вопрос к более простому.

Качаю с сайта туториала исходники. Все работает.
Всередине картинка, помещена в AssetHolder.

Что я делаю:
1) Создаю символ TestSprite с прямоугольником, который залит этим изображением.
2) Экспортирую в класс.
3) В "главной" функции класса программы (та, которая вызывается после прелоадера) пишу такое: stage.addChild(new TestSprite());

Теперь самое интересное. Если в AssetHolder кидаю картинку, то не вижу прелоадера, но вижу спрайт после загрузки. Если кидаю TestSprite, или его + картинку, то работает прелоадер, но не не видно спрайта после загрузки.

Почему так? Как добится золотой середины?


Последний раз редактировалось vinch; 21.02.2010 в 23:46.
Старый 22.02.2010, 00:06
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 2  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
У вас может очень прикольная флеш cs4 и в ней просто невозможно сделать прелодер из-за глюков самой программы (у меня есть рабочие прелоадеры для флеш cs3) во флеш cs4 компилирую, опа... уже прелоадера во флешке нету, а в cs3 тот же фла файл с классами компилируется и прелоадер работает.
Во флеш девелоп проект - новый проект - ас3 проект с прелоадером, работает всегда отлично.
__________________
Гоночка

Старый 22.02.2010, 01:01
vinch вне форума Посмотреть профиль Отправить личное сообщение для vinch Найти все сообщения от vinch
  № 3  
Ответить с цитированием
vinch

Регистрация: Feb 2010
Сообщений: 95
Сделал, как в первоисточнике туториала: http://8bitrocket.com/newsdisplay.aspx?newspage=10807

Прелоадер появляется на 70%, зато после него все (меню и сама игра) работает. В чем может быть дело? Повторюсь, у меня все текстуры не экспортированы в классы, и в assetHolder'е их нету. А еще в прелоадере используются несколько клипов с библиотеки. Экспорт их в первый кадр и рисунков в assetHolder не помогает.

Alex Lexcuk, спасибо за отклик. Я новичок, поэтому возникают вопросы: что предполагает переход на FlashDevelop проект? И возможно ли взаимодействовать такому проекту с CS4?

Старый 22.02.2010, 02:03
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Во флеше в настройках компиляции есть опция Generate Size Report - закликните и посмотрие что и куда скомпилировали.
__________________
Hell is the possibility of sanity

Старый 22.02.2010, 10:26
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 5  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Цитата:
Сообщение от vinch Посмотреть сообщение
Сделал, как в первоисточнике туториала: http://8bitrocket.com/newsdisplay.aspx?newspage=10807

Прелоадер появляется на 70%, зато после него все (меню и сама игра) работает. В чем может быть дело? Повторюсь, у меня все текстуры не экспортированы в классы, и в assetHolder'е их нету. А еще в прелоадере используются несколько клипов с библиотеки. Экспорт их в первый кадр и рисунков в assetHolder не помогает.

Alex Lexcuk, спасибо за отклик. Я новичок, поэтому возникают вопросы: что предполагает переход на FlashDevelop проект? И возможно ли взаимодействовать такому проекту с CS4?
Этот переход ничего не предполагает, FD всего лишь редактор кода, а cs4 всего лишь рисовалка с непонятным текстовым редактором и компилит, тоже не всегда то, чего от него хочешь.

После создания проекта с прелоадером FD создает на автомате два шаблонных класса Preloder и Main.
Все ресурсы, классы и прочее через import из swc библиотеки или embed вшиваются во ворой кадр, а именно в класс Main, класс Preloder желательно дописать по минимуму, тк. это первый кадр, там к примеру может быть анимированная полоска прелоадера.

Вот к примеру как брать ресурсы из cs в FD через swc библиотеку на примере со слайдером.
http://www.murmadillo.tut.su/html/slider.html
__________________
Гоночка

Старый 22.02.2010, 20:51
vinch вне форума Посмотреть профиль Отправить личное сообщение для vinch Найти все сообщения от vinch
  № 6  
Ответить с цитированием
vinch

Регистрация: Feb 2010
Сообщений: 95
Спасибо за ответы.

wvxvw, когда компилирую без экспорта в SWC, то не вижу, где какой класс импортируется. Когда включаю, вижу такое:

Код:
game.swf Movie Report
----------------------

Metadata
--------
Bytes    Value
-----    -----

Frame #    Frame Bytes    Total Bytes    Scene
-------    -----------    -----------    ----------------
      1         142164         142164    Main (AS 3.0 Classes Export Frame)
      2          37184         179348    
      3              3         179351    

Scene                        Shape Bytes    Text Bytes    ActionScript Bytes
-------------------------    -----------    ----------    ------------------
Main                                   0             0                124672

Symbol                       Shape Bytes    Text Bytes    ActionScript Bytes
-------------------------    -----------    ----------    ------------------
assetHolder                            0             0                     0
Preloader                              0            35                     0
TurretHead                           226             0                     0
monstro                              534             0                     0
Background                            38             0                     0
BackgroundMenu                         0             0                     0
FruitActive                           94             0                     0
FruitPassive                          96             0                     0
WhiteScreen                           33             0                     0
//...
//cut
//...
BarrierSprite                          0             0                     0
BarrierLargeSprite                     0             0                     0
HeroSprite                           144             0                     0
MenuHeroSprite                       160             0                     0


Tweened Shapes: 830 bytes

Font Name                 Bytes        Characters    
----------------------    ---------    --------------
Plasticine                     4740     !ACEGILMNOPRSTUWXY[]

ActionScript Bytes    Location
------------------    --------
               643    Main:Frame 1:game.menu.GoNextLevelMenu
              6927    Main:Frame 1:Box2D.Dynamics.b2World
               836    Main:Frame 1:game.menu.TryAgainMenu
              2246    Main:Frame 1:game.Hero
              1381    Main:Frame 1:game.menu.StatusBar
               965    Main:Frame 1:game.menu.MainMenu
               758    Main:Frame 1:game.menu.LevelChooseMenu
               734    Main:Frame 1:game.Barrier
               501    Main:Frame 1:Box2D.Dynamics.b2BodyDef
              2088    Main:Frame 1:game.Boss
              1551    Main:Frame 1:game.Patrol
              1439    Main:Frame 1:Box2D.Dynamics.b2DebugDraw
              1369    Main:Frame 1:game.Turret
              1114    Main:Frame 1:game.ControlledTurret
              4327    Main:Frame 1:Box2D.Dynamics.b2Body
               727    Main:Frame 1:game.menu.LevelChooseButton
               340    Main:Frame 1:Box2D.Collision.b2AABB
               475    Main:Frame 1:game.Graphics
              1145    Main:Frame 1:Box2D.Common.Math.b2Vec2
               757    Main:Frame 1:game.Physics
               417    Main:Frame 1:game.GameConst
               806    Main:Frame 1:game.menu.MenuBarrier
               793    Main:Frame 1:game.menu.Player
              1975    Main:Frame 1:game.Levels
               793    Main:Frame 1:game.BonusObject
               396    Main:Frame 1:Box2D.Collision.Shapes.b2ShapeDef
               362    Main:Frame 1:Box2D.Dynamics.b2ContactListener
              1547    Main:Frame 1:Box2D.Dynamics.Joints.b2Joint
               391    Main:Frame 1:Box2D.Common.Math.b2XForm
               322    Main:Frame 1:Box2D.Dynamics.b2TimeStep
              4294    Main:Frame 1:Box2D.Collision.b2BroadPhase
               516    Main:Frame 1:Box2D.Common.b2Color
               256    Main:Frame 1:Box2D.Dynamics.b2BoundaryListener
              1638    Main:Frame 1:Box2D.Collision.Shapes.b2Shape
               384    Main:Frame 1:Box2D.Dynamics.b2ContactFilter
               329    Main:Frame 1:Box2D.Dynamics.b2DestructionListener
              1707    Main:Frame 1:Box2D.Dynamics.Contacts.b2Contact
               355    Main:Frame 1:Box2D.Dynamics.Joints.b2JointDef
               297    Main:Frame 1:Box2D.Collision.Shapes.b2MassData
               300    Main:Frame 1:Box2D.Dynamics.Joints.b2JointEdge
               311    Main:Frame 1:Box2D.Dynamics.Contacts.b2ContactEdge
               596    Main:Frame 1:Box2D.Common.Math.b2Sweep
               847    Main:Frame 1:Box2D.Common.Math.b2Mat22
               328    Main:Frame 1:Box2D.Collision.Shapes.b2FilterData
               428    Main:Frame 1:Box2D.Collision.b2ContactPoint
               424    Main:Frame 1:Box2D.Dynamics.Contacts.b2ContactResult
               474    Main:Frame 1:Box2D.Collision.b2Proxy
               274    Main:Frame 1:Box2D.Collision.b2OBB
              2582    Main:Frame 1:Box2D.Dynamics.b2Island
               757    Main:Frame 1:Box2D.Collision.b2Pair
              1291    Main:Frame 1:game.Missile
               938    Main:Frame 1:Box2D.Common.b2Settings
               832    Main:Frame 1:Box2D.Collision.b2TimeOfImpact
              1705    Main:Frame 1:Box2D.Common.Math.b2Math
               272    Main:Frame 1:Box2D.Collision.b2PairCallback
               262    Main:Frame 1:Box2D.Collision.b2BoundValues
              1827    Main:Frame 1:Box2D.Collision.b2PairManager
               547    Main:Frame 1:Box2D.Collision.b2Segment
               447    Main:Frame 1:Box2D.Collision.b2ContactID
               369    Main:Frame 1:Box2D.Collision.b2Bound
//...
//cut
//...
               237    Main:Frame 1:FruitActive
               238    Main:Frame 1:FruitPassive
               237    Main:Frame 1:FruitSprite
               236    Main:Frame 1:HeroSprite
               236    Main:Frame 1:HoleSprite
               251    Main:Frame 1:LevelChooseButtonClosed
               248    Main:Frame 1:LevelChooseButtonOpen
              5274    Main:Frame 1:Main
               236    Main:Frame 1:MenuButton
               243    Main:Frame 1:MenuContinueGame
               241    Main:Frame 1:MenuHeroSprite
               237    Main:Frame 1:MenuNewGame
               239    Main:Frame 1:MenuNextLevel
               235    Main:Frame 1:MenuRetry
               243    Main:Frame 1:MenuStatusButton
               239    Main:Frame 1:MissileSprite
               238    Main:Frame 1:PatrolSprite
               277    Main:Frame 1:Preloader
               246    Main:Frame 1:RestartStatusButton
               236    Main:Frame 1:SpotSprite
               246    Main:Frame 1:StatusBarBackground
               233    Main:Frame 1:TurretHead
               243    Main:Frame 1:TurretPushButton
               238    Main:Frame 1:TurretSprite
               237    Main:Frame 1:WhiteScreen
               303    Main:Frame 1:game_fla.assetHolder_1

Bitmap                     Compressed    Compression
-----------------------    ----------  --------  -----------
finish.png                     10440      521284   JPEG Quality=80
white_texture.bmp                803       29088   JPEG Quality=80
patrol.bmp                       424       10000   JPEG Quality=80
stone.bmp                        306        6400   JPEG Quality=80
star.bmp                         292        6400   JPEG Quality=80
star2.bmp                        234        6400   JPEG Quality=80
monstro - копия.png         727        6400   JPEG Quality=80
real_white.bmp                   679       17472   JPEG Quality=80
hole.png                        9091      593600   JPEG Quality=80
texture___.bmp                  1864       61472   JPEG Quality=80
Menu_back.bmp                  16517     1400000   JPEG Quality=80
large_stone.bmp                  587       25600   JPEG Quality=80
Это ведь неверно, что везде пишет Main:Frame 1? У меня так сделано: у всех этих символов не стоит отметка экспорта в первом фрейме, и все они содержатся в assetHolder'e во втором кадре. Ну и в меню фреймом экспорта стоит первый.

Alex Lexcuk, да, неплохой вариант. Я сделал только это: создал новый проект, скопировал туда старые исходники, удалил из них следы старого прелоадера, без изменений сделал экспорт в swc (как в Flash для символов должны быть отмечены пункты экспорта в класс и загрузки в первый кадр?), скопировал swc в lib и добавил в библиотеку. Preloader не менял. Результат - белый экран. Как переделать проект и увидеть признаки жизни?
Цитата:
Все ресурсы, классы и прочее через import из swc библиотеки или embed вшиваются во ворой кадр
В смысле, автоматически? Мне ничего не надо добавлять?

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Ну и в меню фреймом экспорта стоит первый.
На сколько я понимаю - изза этого А вообще, вы зря репорту не доверяете, он вам как раз правду говорит.
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Jan 2010
Адрес: Киев
Сообщений: 156
Записей в блоге: 4
Отправить сообщение для ps_spectre с помощью Skype™
[маленький оффтопик]
даешь флекс компилятор в массы .))
и никаких проблем. )
в нем, ручками при компиляции указываем в какой кадр компилить )
типа так
mxmlc Preloader.as -frame 1 Main.as -include Resources.as
[/маленький оффтопик]

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

Регистрация: Feb 2010
Сообщений: 95
wvxvw, извините, не так выразился. Я доверяю репорту, вот и спросил, это ли показывает суть моей проблемы. Интересно, почему так. Версии две - либо я где-то сделал маленькую, глупую и незаметную ошибку, либо действительно проблемы с flash.
А про настройки в меню паблиш - в примерах из интернета так все работает, да и смена параметра не помогает.

ps_spectre, да уж, спасибо Мне бы основы сначала выучить полностью, а тогда и про флекс компилятор можно думать.

Добавлено через 12 часов 25 минут
Всем огромное спасибо за помощь.

Разобрался с FlashDevelop, перевел туда проект - все работает отлично


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

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

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


 


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


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