![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
А что такое fieldClick? От того о каком объекте идет речь, зависит какие события ему доступны. И главное чего вы пытаетесь добиться?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+1.3 13.07.09]
Регистрация: Aug 2004
Сообщений: 24
|
Цитата:
Мне нужно, чтобы при клике мышкой вылетал патрон "shoot". Для этого я сделал мувиклип, поторый лежит на заднем плане, растянул его на всю рабочую область, и при клике по нему вызывается функция fieldClick, которая добавляет чайлд патрона и стартует его вылет. Вот меня и интересуюе, есть ли какие-то более рациональные способы кликом мыши вызвать функцию fieldClick. Если позволите, я потом задам еще несколько важных для меня вопросов. Спасибо! |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Тогда подписывайте на событие stage на тот же самый клик что и для мувика. Прозрачный мувик тогда не нужен
Добавлено через 1 минуту На сколько я понимаю у вас все в кадрах прописано. Это не рекомендуется для AS3. Код желательно выносить в классы. Выложи бы вы класс было видно от чего наследуется каждый объект, было бы понятно что с ними делать.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+1.3 13.07.09]
Регистрация: Aug 2004
Сообщений: 24
|
Цитата:
Цитата:
Немного привыкну буду в классы выносить. В классы лучше выность все или только то, что часто выплняется или может быть выполнено несколькими объектами?Еще вот такие вопросы: 1. Допустим у меня вначале идет игровое меню. Как мне сделать так, чтобы весь мой игровой код начал выпоняться только после клика по кнопке старт? Зпихнуть весь код в класс и вызвать его кнопкой старт? И так же его удалить его призавершении игры? 2. Можно ли вызывать какую-то функцию не привязывая ее к объекту (Как например: mc1.addEventLiatener(Event.ENTER_FRAME, NameFunction)., а так, чтобы она вызывалась сама, при запуске флешки? Последний раз редактировалось SONICTOM; 14.07.2009 в 16:22. |
|
|||||
|
Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
|
SONICTOM, не совсем понятно, что ВЫ хотите реализовать...Вам нужно, чтобы приемник для события MouseEvent.CLICK выполнялся не по щелчку на прозрачное поле field, а на что тогда? Поподробнее, plz
__________________
04.08 1516 23:42 |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Подход не правильный) Весь ваш мувик должен быть связан с неким классом, в котором запускаются процессы по загрузке, переходу на новые кадры по событиям и т.п. В случае с игровым меню для кнопок меню пишется общий класс "КНОПКА". А каждой отдельной кнопке присваивается класс наследник от "КНОПКА" с перекрытым методом по клик. Таким образом ваша кнопка старт должна при клике в классе генерировать событие "запуститьИгру". А класс главного мувика должен ловить это событие и переводить мувик к нужному кадру.
Таким образом ООП означает выделить объекты, определить их свойства и поведение и тогда уже писать для них классы. Чем более основательно вы спроектируете систему существования и взаимодействия объектов, тем легче будет делать и модифицировать. Универсальность когда в один класс все пихают не рациональна. А на счет привычки, учитесь сразу правильно делать, это очень поможет в будущем. Весь код в классы. На кадрах только методы типа stop(), gotoAndStop() и т.д. Хотя в общем можно и без них обойтись)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
[+1.3 13.07.09]
Регистрация: Aug 2004
Сообщений: 24
|
Цитата:
Цитата:
![]() Просто видео в моих видеоуроках это еще не описывалось. Учили создавать классы в виде as файлов, где описывалось поведение спрайта, потом привязывали поведение объекта из бблиотеки к этому классу. Думаю с этим разберуть потом. А пока у меня по прежнему проблемы с реализацией игры После попадания патрона во врага, оба удаляются и по их координатам появляется мувик с анимацией взрыва. После снова вылазит ошибка: ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller. at flash.display:: DisplayObjectContainer/removeChild() at g6_fla::MainTimeline/shootTrace() Не пойму в чем дело Вот текущий код: sam.addEventListener(Event.ENTER_FRAME, samTrace); function samTrace(a:Event):void { sam.x=mouseX; } // Патрон var shoot:sh=new sh; var n:Number=1; stage.addEventListener(MouseEvent.CLICK, fieldClick); function fieldClick(a:MouseEvent):void { addChild(shoot); shoot.x=sam.x; shoot.y=sam.y-20; shoot.addEventListener(Event.ENTER_FRAME, shootTrace); } function shootTrace(a:Event):void { if (shoot.y>0) { shoot.y-=5; stage.removeEventListener(MouseEvent.CLICK, fieldClick); if (shoot.y<0) { shoot.removeEventListener(Event.ENTER_FRAME, shootTrace); removeChild(shoot); stage.addEventListener(MouseEvent.CLICK, fieldClick); } } } // Противник var en:Enemy=new Enemy var b:Number=1 en.addEventListener(Event.ENTER_FRAME, enStart) function enStart(a:Event):void{ if(b==1){ addChild(en) en.y=-30 en.x=Math.random()*550 b=2 } if(en.y<430){ en.y+=5 } else{ b=1} } // Отслеживание попадания stage.addEventListener(Event.ENTER_FRAME, hitTrace) function hitTrace(a:Event):void{ if(shoot.hitTestObject(en)){ stage.removeEventListener(Event.ENTER_FRAME, hitTrace) boom.x=en.x boom.y=en.y boom.play() removeChild(shoot) removeChild(en) } } Последний раз редактировалось SONICTOM; 14.07.2009 в 18:38. |
|
|||||
|
[+1.3 13.07.09]
Регистрация: Aug 2004
Сообщений: 24
|
Братцы, не оставьте, пожалуйста, без помощи!
|
|
|||||
|
Регистрация: Sep 2015
Сообщений: 69
|
Скажите почему возникает эта ошибка в моем случае?
Решил вынести код игрового меню из main в отдельный класс. Появилась эта ошибка касательно переменных AboutText и myFormat. В main этот код работал, а в новом (своем) классе уже нет. package { import flash.display.Sprite; import flash.events.Event; import flash.display.*; import flash.events.MouseEvent; import flash.system.fscommand; import flash.text.*; public class MenuScreen extends Sprite { var myFormat:TextFormat = new TextFormat(); var AboutText:TextField = new TextField(); var btn_play:MyButtonClass = new MyButtonClass(); var btn_opt:MyButtonClass = new MyButtonClass(); var btn_inst:MyButtonClass = new MyButtonClass(); var btn_abt:MyButtonClass = new MyButtonClass(); var btn_ext:MyButtonClass = new MyButtonClass(); myFormat.font = "Times New Roman"; myFormat.size = 20; myFormat.color = 0x000000; AboutText.width = 550; AboutText.height = 250; AboutText.x = 225; AboutText.y = 80; AboutText.selectable = false; AboutText.setTextFormat(myFormat); addChild(AboutText); public function MenuScreen() { super(); btn_play.name = "btn_PLAY"; btn_play.label = "Play"; btn_play.addEventListener(MouseEvent.CLICK, btnMouseHandle); addChild(btn_play).y = 50; btn_play.x = 80 btn_opt.name = "btn_OPTIONS"; btn_opt.label = "Options" btn_opt.addEventListener(MouseEvent.CLICK, btnMouseHandle); addChild(btn_opt).y = 100; btn_opt.x = 80 btn_inst.name = "btn_INSTRUCTIONS"; btn_inst.label = "Instructions" btn_inst.addEventListener(MouseEvent.CLICK, btnMouseHandle); addChild(btn_inst).y = 150; btn_inst.x = 80 btn_abt.name = "btn_ABOUT"; btn_abt.label = "About" btn_abt.addEventListener(MouseEvent.CLICK, btnMouseHandle); addChild(btn_abt).y = 200; btn_abt.x = 80 btn_ext.name = "btn_EXIT"; btn_ext.label = "Exit" btn_ext.addEventListener(MouseEvent.CLICK, btnMouseHandle); addChild(btn_ext).y = 250; btn_ext.x = 80 } function btnMouseHandle(e:MouseEvent):void { switch(e.target.name){ case "btn_PLAY": var TestSWC:MovieClip = new WSymbol_mc; trace("btn_01 click"); TestSWC.x = 50; TestSWC.y = 50; addChild(TestSWC); break; case "btn_OPTIONS": trace("btn_02 click"); break; case "btn_INSTRUCTIONS": trace("btn_03 click"); ShowTextBlock (e.target.name); break; case "btn_ABOUT": trace("btn_04 click"); ShowTextBlock (e.target.name); break; case "btn_EXIT": trace("btn_05 click"); fscommand('quit'); break; } } function ShowTextBlock (strID:String):void { if (strID == "btn_INSTRUCTIONS") { trace("INS"); AboutText.text = "Some text here"; } else { trace("AB"); myFormat.align = TextFormatAlign.CENTER; myFormat.leading = 10; AboutText.defaultTextFormat = myFormat; AboutText.text = "Some text here"; } } } } package { import flash.display.Sprite; import flash.events.Event; import flash.display.*; import flash.events.MouseEvent; import flash.system.fscommand; import flash.text.*; public class Main extends Sprite { var MScreen:MenuScreen = new MenuScreen; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); addChild(MScreen); } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|