ndez
14.04.2011, 11:44
Доброго времени суток. Я начинающий. Сразу извеняюсь за терминологию (если где что не так написал). Есть вот такой код- это упращенная версия исходного кода:
Главный класс. Здесь контейнеры в которые помещают изображения.
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);
}
}
}
}
Класс B.
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;
}
}
}
Мне очень хотелось разобраться в этом вопросе, особенно в плане параметров и аргументов метод и конструкторов. Заранее благодарен.
Главный класс. Здесь контейнеры в которые помещают изображения.
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);
}
}
}
}
Класс B.
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;
}
}
}
Мне очень хотелось разобраться в этом вопросе, особенно в плане параметров и аргументов метод и конструкторов. Заранее благодарен.