|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
собственный класс, обращение к объектам главного класса
Делаю аквариум с рыбками. Нарисовал вокруг аквариума область, назвал ее hitTest_mc.
Нарисовал рыбку, поменял ее класс в библиотеке на собственный, который должен заставлять рыбку плавать. И если рыбка наплывет на hitTest_mc, она должна развернуться. hitTest_mc – инстенснэйм экземпляра, который находится на таймлайне. Как к нему обратиться из моего дополнительного класса рыбки? package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; public class FishMove extends MovieClip { public function FishMove(hitTest_mc:Sprite):void { trace("FishMove class loaded"); this.addEventListener(Event.ENTER_FRAME, moveMyFish); } private function moveMyFish(evt:Event):void { this.x += 1; if (this.hitTestObject(hitTest_mc)) { this.x -= 1; } } } } может что–то надо написать на главном таймлайне? |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
А где код главного класса?
|
|
|||||
не думал что понадобится,) вот он
package { import flash.display.MovieClip; import flash.events.Event; import flash.events.ProgressEvent; import flash.display.StageScaleMode; import flash.display.StageAlign; public class PoulScript extends MovieClip { private var _stage; private var _w:Number; private var _h:Number; public function PoulScript():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.showDefaultContextMenu=false; addStageVar(); } private function addStageVar():void { _stage = stage; _w = _stage.stageWidth; _h = _stage.stageHeight; scene_1_mc.x = _w/2; scene_1_mc.y = _h/2; loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressMove); loaderInfo.addEventListener(Event.COMPLETE, completeProgress); _stage.addEventListener(Event.RESIZE, scene_1Resize); scene_1(); } //------------------------------------------ПРЕЛОАДЕР------------------------------------------// private function progressMove(event:ProgressEvent):void { var loaded:uint = event.bytesLoaded;//сколько загрузилось var total:uint = event.bytesTotal;//сколько весит всего var procent:uint = int(loaded / total * 100);//процент загрузки scene_1_mc.progress_tf.text = int(loaded / total * 100) + '%'; } private function completeProgress(event:Event):void { _stage.removeEventListener(Event.RESIZE, scene_1Resize); _stage.addEventListener(Event.RESIZE, scene_2Resize); gotoAndStop(2); scene_2(); } //------------------------------------------РЕСАЙЗИМ СЦЕНЫ------------------------------------------// private function scene_1Resize(evt:Event):void { _w = _stage.stageWidth; _h = _stage.stageHeight; bg_mc.width = _w; bg_mc.height = _h; bg_mc.x = _w/2; bg_mc.y = _h/2; scene_1_mc.x = _w/2; scene_1_mc.y = _h/2; } private function scene_2Resize(evt:Event):void { _w = _stage.stageWidth; _h = _stage.stageHeight; bg2_mc.width = _w; bg2_mc.height = _h; bg2_mc.x = _w/2; bg2_mc.y = _h/2; scene_2_mc.x = _w/2; scene_2_mc.y = _h/2; } //------------------------------------------СЦЕНЫ------------------------------------------// //----------------------------1 «ПРЕЛОАДЕР»-------- private function scene_1():void { trace("сцена 1"); bg_mc.width = _w; bg_mc.height = _h; bg_mc.x = _w/2; bg_mc.y = _h/2; } //----------------------------2 сцена-------- private function scene_2():void { trace("сцена 2"); bg2_mc.width = _w; bg2_mc.height = _h; bg2_mc.x = _w/2; bg2_mc.y = _h/2; } } } и у нас в сцене 2 появляется аквариум с hitTest_mc и рыбками Последний раз редактировалось Dr_Bra; 18.08.2010 в 18:59. |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
А рыбки то где у вас рождаются? Во втором кадре что ли? Создавайте их в scene_2().
Если я конечно вас правильно понял, гыгы. И вообще перепишете все, у вас тут нет острой необходимости в кадрах. |
|
|||||
то есть нужно их добавлять в коде, так-то они у меня сразу клались на сцену.
|
|
|||||
Регистрация: Nov 2009
Сообщений: 425
|
Dr_Bra, по части класса FishMove косяк в логике метода moveMyFish
конкретно вот: при столкновении рыба отплывёт на 1рх, после чего продолжит движение по исходному вектору, выглядеть будет так как будто долбится об стенку аквариума =) введи переменную, отвечающую за смещение, step скажем и обнови метод: P.S. на верность и правильность моих высказываний не претендую - до AS3 только-только добрался - изучаю пока что... но логика на то и логика - она справедлива для всего =)) |
|
|||||
говорит incorrect number of argument..
в главной класс нужно импортировать ? Добавлено через 11 минут var fish1:FishMove = new FishMove(getChildByName("hitTest_mc"));// ругаетсо scene_2_mc.aquarium_mc.addChild(fish1); Последний раз редактировалось Dr_Bra; 18.08.2010 в 19:38. |
|
|||||
Наверное не стоит париться и делать собственный класс для рыбок, а писать все в одном классе PoulScript, который в моем случае, я считаю, "главный". На самом деле не хотелось плодить код, но решения не нашлось!
|
Часовой пояс GMT +4, время: 04:59. |
|
« Предыдущая тема | Следующая тема » |
Теги |
дополнительный класс , обращение , объект |
|
|