![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 6
|
Здравствуйте. Столкнулся со следующей проблемой: у меня есть 3 класса: Engine, с помощью которого добавляются на сцену объекты, класс Ship, в котором осуществляется управление кораблем, и класс Circle, метод которого нужно вызвать из класса Ship.
Engine package { import flash.display.MovieClip; import flash.display.Stage; import flash.events.Event; public class Engine extends MovieClip { public static var ourShip:Ship; private var circle:Circle; public function Engine() { ourShip=new Ship(stage); addChild(ourShip); ourShip.x=stage.stageWidth/2; ourShip.y=stage.stageHeight/2; circle=new Circle(stage); addChild(circle); circle.x=ourShip.x; circle.y=ourShip.y; } } } package { import flash.display.MovieClip; import flash.display.Stage; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.events.Event; public class Ship extends MovieClip { private var stageRef:Stage; private var spaceDown:Boolean=false; public function Ship(stageRef:Stage) { this.stageRef=stageRef; this.addEventListener(Event.ENTER_FRAME, moveShip); stageRef.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown); stageRef.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp); } private function moveShip(e:Event):void { if (spaceDown) Circle.zoomCircle(); } private function checkKeysUp(e:KeyboardEvent):void { if (e.keyCode==32) spaceDown=false; } private function checkKeysDown(e:KeyboardEvent):void { if (e.keyCode==32) spaceDown=true; } } } package { import flash.display.MovieClip; import flash.display.Stage; import flash.events.Event; public class Circle extends MovieClip { private var stageRef:Stage; public function Circle(stageRef:Stage) { this.stageRef=stageRef; addEventListener(Event.ENTER_FRAME, zoomCircle); } private function zoomCircle():void { trace("zoom"); } } } |
|
|||||
|
По любому вместо private - public function zoomCircle()
И тогда надо создавать экземпляр класса Circle, либо делать метод еще и статичным, что вы вряд ли хотите, глядя на конструктор.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 6
|
Вместо private сделал public, по поводу экземпляра класса - можете на примере показать как это делается, или ссылку куда дать?
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 30
|
GBee а никак нелбзя обратиться к экземпляру класса Circle объявленного в Engine из класса Ship? интересно просто стало, вроде можно но что то я подзабыл ваше язык
буду наверстывать упушенное |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 6
|
Злой вы
, ну да ладно, я кажется сделал и сам.Ship package { import flash.display.MovieClip; import flash.display.Stage; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.events.Event; public class Ship extends MovieClip { private var stageRef:Stage; private var spaceDown:Boolean=false; private var circle:Circle; public function Ship(stageRef:Stage) { this.stageRef=stageRef; this.addEventListener(Event.ENTER_FRAME, moveShip); stageRef.addEventListener(KeyboardEvent.KEY_DOWN, checkKeysDown); stageRef.addEventListener(KeyboardEvent.KEY_UP, checkKeysUp); circle=new Circle(stage); addChild(circle); circle.x=100; circle.y=100; } private function moveShip(e:Event):void { if (spaceDown) circle.zoomCircle(); } private function checkKeysUp(e:KeyboardEvent):void { if (e.keyCode==32) spaceDown=false; } private function checkKeysDown(e:KeyboardEvent):void { if (e.keyCode==32) spaceDown=true; } } } Только теперь появилась другая проблема: "zoom" выводит не один раз за нажатие, как должно, а по 3-4. |
|
|||||
|
Это не проблема, это вы так написали. EnterFrame несколько раз сработает между нажатием и отпусканием кнопки и это хорошо :о) Он даже работает когда кнопка не нажата и это плохо :о(
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 6
|
Ясно, спасибо. А как решить это можно? Пока в голову пришло только добавить таймер который бы затормаживал метод до отпускания кнопки в программе.
|
|
|||||
|
Регистрация: Jul 2009
Сообщений: 35
|
Очень плохо, если более или менее серьёзное программирование начинается со скриптовых языков, со всех их распущенностью. Что не минус им, но требует дисциплины кода.
Надо бы узнать что такое процедурное и объектно-ориентированное программирование. Хотя бы основы. А то не знать разницы между public и private методами, что хорошо заметно по первому посту. |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|