Копеечный вопрос - мне нужно, чтобы листенер на клик по бомбе был не на верхнем уровне, а внутри бомбы, и метод killMan класса GameBombMan вызывался из метода bombBoom объекта bomb. Экземпляров класса Bomb может быть сколько угодно, для примера сделал 10.
GameBombMan.as

Код AS3:
package {
import flash.display.*;
public class GameBombMan extends Sprite{
private var bomb:Bomb;
private var man:Man;
private var container:Sprite;
public function GameBombMan(){
container = new Sprite();
addChild(container);
man = new Man(container);
for( var i:int=0;i<10;i++ ) {
new Bomb(container,Math.random()*500,Math.random()*300);
}
}
public function killMan():void{
man.dropMan();
}
}
}
Bomb.as

Код AS3:
package {
import flash.display.*;
import flash.events.*;
public class Bomb extends Sprite{
private var bombImg:Sprite;
public function Bomb(container:Sprite,bombX:int,bombY:int){
bombImg = new Sprite();
bombImg.x = bombX;
bombImg.y = bombY;
with (bombImg.graphics) {
beginFill(0x00aaaa, 1);
drawCircle(0, 0, 10);
endFill();
}
container.addChild(bombImg);
bombImg.addEventListener(MouseEvent.CLICK, bombBoom);
}
public function bombBoom(e:Event) {
bombImg.scaleX *= 2;
bombImg.scaleY *= 2;
// Здесь нужно вызвать killMan() из GameBombMan
}
}
}
Man.as

Код AS3:
package {
import flash.display.*;
import flash.events.*;
public class Man extends Sprite{
private var manImg:Sprite;
public function Man(container:Sprite){
manImg = new Sprite();
manImg.x = 300;
manImg.y = 100;
with (manImg.graphics) {
beginFill(0xaa3333, 1);
drawRect(0, 0, 40, 100);
endFill();
}
container.addChild(manImg);
manImg.addEventListener(MouseEvent.CLICK, testClick); // для проверки, что dropMan() работает
}
private function testClick(e:Event) {
this.dropMan();
}
public function dropMan() {
if (manImg.width == 40) { // "Неваляшка"
manImg.width = 100;
manImg.height = 40;
manImg.y += 60;
} else {
manImg.width = 40;
manImg.height = 100;
manImg.y -= 60;
}
}
}
}