![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2010
Сообщений: 2
|
Сдраствуйте дорогие друзья.ела простеньку игрушку на AS 3.0.Изуча (пс. на клавиатуре некоторые клавиши не пашут все ни как нову не купл...) все это дело совсем недавно.Вобщем застрял с концами рось по поисковикам ну ни как не могу разобраться.Прошу вашей помощи.Постарась обьяснить как смогу доступней.Построил все восновном на первом кадре верхнем слое назвав actions.
Код: var monstersInGame:uint; var monsterMaker:Timer; var container_mc:MovieClip; var cursor:MovieClip; var energy:int; var score:int; var live:Number =3; var myTimer1:Timer; var monster:MovieClip; жизни lives это instance name мувика с жизнями,он помещен на сцену if(live==3){ lives.gotoAndStop(3);} if(live==2){ lives.gotoAndStop(2);} if(live==1){ lives.gotoAndStop(1);} енергия energy_mc тоже instance name мувика добавленного на сцену количество монстров monstersInGame = 8; monsterMaker = new Timer(1000,monstersInGame); container_mc = new MovieClip(); addChild(container_mc); stage.addEventListener(MouseEvent.MOUSE_MOVE, dragCursor); stage.addEventListener(MouseEvent.CLICK, clickCursor); monsterMaker.addEventListener(TimerEvent.TIMER, createMonsters); monsterMaker.start(); прячем мышь Далее функция строим монстров function createMonsters(event:TimerEvent):void { monster = new Monster(); monster.x = Math.random() * stage.stageWidth; if (monster.x <= 100) { monster.x = 100; } else if (monster.x >= 380) { monster.x = 350; } monster.y = Math.random() * stage.stageHeight; if (monster.y <= 100) { monster.y = 100; } else if (monster.y >= 380) { monster.y = 350; } container_mc.addChild(monster); весь код находится на первом кадре мувика монстр это classic tween скопированный для AS 3.0 var this_xml:XML = <Motion duration="30" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*"> <source> <Source frameRate="12" x="185.3" y="253.3" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="Monster" class="Monster"> <dimensions> <geom:Rectangle left="-52.65" top="-42.65" width="100" height="82"/> </dimensions> <transformationPoint> <geom:Point x="0.5005" y="0.500609756097561"/> </transformationPoint> </Source> </source> <Keyframe index="0" tweenSnap="true" tweenSync="true"> <tweens> <SimpleEase ease="0"/> </tweens> </Keyframe> <Keyframe index="29" x="124" y="-60.95000000000002" scaleX="1.52" scaleY="1.415"/> </Motion>; var this_animator:Animator = new Animator(this_xml, this); this_animator.play(); this_animator.addEventListener(MotionEvent.MOTION_END, hurtPlayer); function hurtPlayer (Event:MotionEvent): void { var main:MovieClip = MovieClip(this.parent.parent); main.lose(); this.parent.removeChild(this); } this.addEventListener(MouseEvent.CLICK, killMonster); function killMonster(event:MouseEvent):void { gotoAndPlay(31) this_animator = new Animator(this_xml, this); this_animator.play(); this_animator.addEventListener(MotionEvent.MOTION_END, die); } function die(event:MotionEvent):void { var main:MovieClip = MovieClip(this.parent.parent); main.win(); this_animator.removeEventListener(MotionEvent.MOTION_END, hurtPlayer); this.parent.removeChild(this); } function dragCursor(event:MouseEvent):void { cursor.x = this.mouseX; cursor.y = this.mouseY; } function win():void { score ++; if(score >= 6) { monsterMaker.stop(); removeChild(cursor) stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragCursor); stage.removeEventListener(MouseEvent.CLICK, clickCursor); removeChild(container_mc); gotoAndStop(4); далее проиграли вот тут все проблемы которые я ни как не могу решить как уже ток не ставил не двигал если добовля вот это if(energy==4){ energy_mc.gotoAndStop(4);} if(energy==3){ energy_mc.gotoAndStop(3);} if (energy==2){ energy_mc.gotoAndStop(2);} if(energy==1){ energy_mc.gotoAndStop(1);} if(energy==0){ energy_mc.gotoAndStop(1);} то игра играется но вылетает такая ошибка TypeError: Error #1009: Cannot access a property or method of a null object reference. at Monster/hurtPlayer() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at fl.motion::AnimatorBase/end() at fl.motion::AnimatorBase/handleLastFrame() at fl.motion::AnimatorBase/nextFrame() at fl.motion::AnimatorBase/handleEnterFrame() в debug мне выводит ошибку с клипа монстра с функции function hurtPlayer (Event:MotionEvent): void { var main:MovieClip = MovieClip(this.parent.parent);" вот эту строку там где мы проиграли "main.lose(); this.parent.removeChild(this); } Если убрать if(energy==3){ energy_mc.gotoAndStop(3);}...." то тогда начинает жаловатьсЯ на все убираемые Child removeChild(container_mc); removeChild(cursor) removeChild(gun) removeChild(units) выдает таку ошибку ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. at flash.display: isplayObjectContainer/removeChild()at smoe_fla::MainTimeline/decreaseEnergy() if(energy <= 1) { live--; monsterMaker.stop(); removeChild(container_mc); removeChild(cursor) removeChild(gun) removeChild(units) Mouse.show(); stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragCursor); stage.removeEventListener(MouseEvent.CLICK, clickCursor); if (live==0) { gotoAndStop(1); тут например продолжить игру и перейти на второй кадр где распологается startlevel1(); И такие же ошибки в случае если мы выграли.Подскажите пожалуйста как правельно строить функции проиграли выграли,поскольку ч то туда не поставл все ему не нравится.Спасибо.Хотел по понятней обьяснить но кажется все в кашу получилось. Добавлено через 4 минуты Да в функции function win где выграли там та же проблема с Child что и прогиграли.Прошу строго не судить если не в ту тему .Мучась уже очень долго ,прошу помощи. Последний раз редактировалось Igors; 20.05.2010 в 00:24. |
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Оформите код тегами [AS3][/AS3]
Последний раз редактировалось i.o.; 20.05.2010 в 00:05. |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:23. |
|
|
« Предыдущая тема | Следующая тема » |
|
|