Показать сообщение отдельно
Старый 04.05.2011, 11:06
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>Почему не подойдет цикл?
осмелюсь предположить, что только потому, что мы не ищем легких путей
спецом для этого случая вариант со статическим списком - внешне выглядит как заказывали: чик и все,
но должен огорчить товарища - реализация все равно через цикл, как и любая другая для подобной задачки
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite 
	{
		public function Main():void 
		{
			//10 экземпляров
			for (var i:int = 0; i < 10; i++) 
			{
				addChild(new Ystr());
			}
			stage.addEventListener(MouseEvent.CLICK, onClick);
		}
		//переключаем видимость по клику
		private function onClick(event:MouseEvent):void 
		{
			Ystr.visible = !Ystr.visible;
		}
	}
}
//==========================================================
import flash.display.Sprite;
class Ystr extends Sprite
{
	private static var list:Array/*Ystr*/ = [];
	private static var _visible:Boolean = true;
	public function Ystr():void 
	{
		graphics.beginFill(0xC0C0C0);
		graphics.drawCircle(0, 0, 10);
		x = Math.random() * 400;
		y = Math.random() * 400;
		list.push(this);
	}
	public static function get visible():Boolean {return _visible;}
	public static function set visible(value:Boolean):void
	{
		if (value != _visible) 
		{
			_visible = value;
			for each(var item:Ystr in list) 
			{
				item.visible = _visible;
			}
		}
	}
}