![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2010
Сообщений: 95
|
Здраствуйте.
По этой инструкции - http://asgamer.com/2009/making-a-com...-the-preloader - создавал прелоадер, но добится результата так и не смог ![]() Работаю с Flash CS4 и Flash Develop. Есть игра, нужен прелоадер. В главном таймлайне изначально ничего не было; последовательность моих действий такова: 1) Создал анимацю на 100 кадров и привязал к классу game.ThePreloader (чуть измененный класс с инструкции): 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")); } } } 3) Создал MovieClip и поместил туда все MovieClip'ы с предыдущего пункта. Вопрос - изображения и спрайты, не экспортированные в классы, сюда помещать не надо? 4) Таким образом исправил конструктор в главном классе игры Main и добавил пару функций, в соответсвии с написанным по ссылке: 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); //дальше код, который был в старом конструкторе } Кажется, все. Результат: сначала экран пустой, тогда при 60% появляется прелоадер с соответвующей позицией анимации; по результату его работы появляется меню игры, но без фона и кнопок, видны лишь только шарики, появляющиеся на экране рандомно Буду очень благодарен, если кто-то поробует разобратся и подсказать, в чем я ошибся. И еще - в Publish Settings стоит экспорт классов в первом кадре, это никак не влияет на MovieClip'ы со снятой галочкой экспорта? Добавлено через 7 минут Извините, в последнем абзаце ошибся. Обьяснить то, почему видна только часть спрайтов, все-таки не могу (для них тоже класс не создавался). Добавлено через 32 минуты Правильно ли, что у меня все изображения (текстуры) не экспортированны в классы? Хотя, их экспорт, кажется, не помогает. Добавлено через 3 часа 30 минут heeeelp! Свожу вопрос к более простому. Качаю с сайта туториала исходники. Все работает. Всередине картинка, помещена в AssetHolder. Что я делаю: 1) Создаю символ TestSprite с прямоугольником, который залит этим изображением. 2) Экспортирую в класс. 3) В "главной" функции класса программы (та, которая вызывается после прелоадера) пишу такое: stage.addChild(new TestSprite()); Теперь самое интересное. Если в AssetHolder кидаю картинку, то не вижу прелоадера, но вижу спрайт после загрузки. Если кидаю TestSprite, или его + картинку, то работает прелоадер, но не не видно спрайта после загрузки. Почему так? Как добится золотой середины? Последний раз редактировалось vinch; 21.02.2010 в 23:46. |
|
|||||
|
У вас может очень прикольная флеш cs4 и в ней просто невозможно сделать прелодер из-за глюков самой программы (у меня есть рабочие прелоадеры для флеш cs3) во флеш cs4 компилирую, опа... уже прелоадера во флешке нету, а в cs3 тот же фла файл с классами компилируется и прелоадер работает.
Во флеш девелоп проект - новый проект - ас3 проект с прелоадером, работает всегда отлично.
__________________
Гоночка |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 95
|
Сделал, как в первоисточнике туториала: http://8bitrocket.com/newsdisplay.aspx?newspage=10807
Прелоадер появляется на 70%, зато после него все (меню и сама игра) работает. В чем может быть дело? Повторюсь, у меня все текстуры не экспортированы в классы, и в assetHolder'е их нету. А еще в прелоадере используются несколько клипов с библиотеки. Экспорт их в первый кадр и рисунков в assetHolder не помогает. Alex Lexcuk, спасибо за отклик. Я новичок, поэтому возникают вопросы: что предполагает переход на FlashDevelop проект? И возможно ли взаимодействовать такому проекту с CS4? |
|
|||||
|
Modus ponens
|
Во флеше в настройках компиляции есть опция Generate Size Report - закликните и посмотрие что и куда скомпилировали.
__________________
Hell is the possibility of sanity |
|
|||||
|
Цитата:
После создания проекта с прелоадером FD создает на автомате два шаблонных класса Preloder и Main. Все ресурсы, классы и прочее через import из swc библиотеки или embed вшиваются во ворой кадр, а именно в класс Main, класс Preloder желательно дописать по минимуму, тк. это первый кадр, там к примеру может быть анимированная полоска прелоадера. Вот к примеру как брать ресурсы из cs в FD через swc библиотеку на примере со слайдером. http://www.murmadillo.tut.su/html/slider.html
__________________
Гоночка |
|
|||||
|
Регистрация: 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
Alex Lexcuk, да, неплохой вариант. Я сделал только это: создал новый проект, скопировал туда старые исходники, удалил из них следы старого прелоадера, без изменений сделал экспорт в swc (как в Flash для символов должны быть отмечены пункты экспорта в класс и загрузки в первый кадр?), скопировал swc в lib и добавил в библиотеку. Preloader не менял. Результат - белый экран. Как переделать проект и увидеть признаки жизни? Цитата:
|
|
|||||
|
Modus ponens
|
Цитата:
А вообще, вы зря репорту не доверяете, он вам как раз правду говорит.
__________________
Hell is the possibility of sanity |
|
|||||
|
[маленький оффтопик]
даешь флекс компилятор в массы .)) и никаких проблем. ) в нем, ручками при компиляции указываем в какой кадр компилить ) типа так mxmlc Preloader.as -frame 1 Main.as -include Resources.as [/маленький оффтопик] |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 95
|
wvxvw, извините, не так выразился. Я доверяю репорту, вот и спросил, это ли показывает суть моей проблемы. Интересно, почему так. Версии две - либо я где-то сделал маленькую, глупую и незаметную ошибку, либо действительно проблемы с flash.
А про настройки в меню паблиш - в примерах из интернета так все работает, да и смена параметра не помогает. ps_spectre, да уж, спасибо Мне бы основы сначала выучить полностью, а тогда и про флекс компилятор можно думать.Добавлено через 12 часов 25 минут Всем огромное спасибо за помощь. Разобрался с FlashDevelop, перевел туда проект - все работает отлично ![]() Последний раз редактировалось vinch; 23.02.2010 в 11:58. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|