Показать сообщение отдельно
Старый 29.11.2009, 12:32
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 15  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Копеечный вопрос - мне нужно, чтобы листенер на клик по бомбе был не на верхнем уровне, а внутри бомбы, и метод 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;				
			}
		}
 
	}
}