![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2011
Сообщений: 13
|
Доброго времени суток. Я начинающий. Сразу извеняюсь за терминологию (если где что не так написал). Есть вот такой код- это упращенная версия исходного кода:
Главный класс. Здесь контейнеры в которые помещают изображения. package { import flash.display.Sprite; import flash.display.Stage; [SWF(width = "640", height = "480")] public class Main extends Sprite { public var contener:Sprite; public var contenerA:Sprite; public var contenerB:Sprite; public var a; public function Main() { contener = new Sprite; contenerA = new Sprite; contenerB = new Sprite; stage.frameRate = 24; addChild(contener); contener.addChild(contenerA); contener.addChild(contenerB); a = new A(this); } } } package { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.display.Bitmap; import flash.display.Stage; public class A extends Sprite { private var photo1:Bitmap; public var ss; [Embed(source='../photo1.png')] public var Photo1:Class; public var main:Main; private var space:Boolean; public function A (mamain) { main = mamain; photo1 = new Photo1; main.contenerA.addChild(photo1); main.stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down); main.stage.addEventListener(KeyboardEvent.KEY_UP, key_up); addEventListener(Event.ENTER_FRAME, onEnterFrame); } function key_down(e:KeyboardEvent) { if (e.keyCode==32) { space = true; } } function key_up(e:KeyboardEvent) { if (e.keyCode==32) { space = false; } } function onEnterFrame(event:Event):void { if (space == true) { ssss(); } function ssss() { ss = new B(main); } } } } package { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.display.Bitmap; import flash.display.Stage; public class B extends Sprite { public var main; private var photo2:Bitmap; private var photo3:Bitmap; private var photoX; private var ccc; public var cc:C; [Embed(source='../photo2.png')] public var Photo2:Class; [Embed(source='../photo3.png')] public var Photo3:Class; public function B(mamain) { main = mamain; photo2 = new Photo2; photo3 = new Photo3; /*Здесь нужен вызов функции variantPhoto () из класса С, который вернет значение variant и присвоит его переменной ссс */ if (ccc==1) { photoX = photo2; } if (ccc == 2) { photoX = photo3; } photoX.x = 200; photoX.y = 300; main.contenerB.addChild(photoX); } } } Класс С. package { import flash.events.Event; import flash.events.KeyboardEvent; import flash.display.Stage; import flash.display.Sprite; public class C extends Sprite { public var variant:Number; private var ors; public var main:Main; public function C (mamain) { main = mamain; main.stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down); } private function key_down(e:KeyboardEvent) { if (e.keyCode == 49) { variant = 1; } if (e.keyCode == 50) { variant = 2; } if (e.keyCode == 51) { variant = 3; } if (e.keyCode == 52) { variant = 4; } } //значение variant нужно вернут в класс В private function variantPhoto() { return variant; } } } |
|
|||||
|
В классе B подпишитесь на нажатие пробела. В классе C создайте функцию, которая будет принимать код клавиши и возвращать номер варианта.
В обработчике клавиатуры в классе B вызывайте функцию класса С и получайте Ваш вариант. Для того чтобы все заработало у B должна быть ссылка на экземпляр класса C. Если ссылку на экземпляр C передать сложно/неудобно, сделайте эту функцию статической.
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Apr 2011
Сообщений: 13
|
А разве данная функция не вернет значение нужного варианта
Вообще то я не совсем понял зачем классу В подписываться на нажатие пробела. По нажатию пробела и так картинка вставляется на сцену. Может я конечно и не прав, но я предполагал написать в конструкторе класса В что то типа: только получается ошибка, а какие аргументы или параметры писать в скобках я не знаю. Вот по этому и спрашиваю. |
|
|||||
|
|
|
|||||
|
Регистрация: Apr 2011
Сообщений: 13
|
Результат получил путем перенесения слушателя клавиш выбора картинок в класс В, класс С вообще удалил. Но очень бы хотелось в плане общего развития узнать возможно ли при данном раскладе реализовать вызов метода и возврат значения и как это сделать.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|