All pastes #211437 Raw Edit

Miscellany

public text v1 · immutable
#211437 ·published 2006-10-20 09:44 UTC
rendered paste body
package hbl {
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import mx.core.MovieClipAsset;
	import flash.events.MouseEvent;
	import mx.core.UIComponent;
	
	public class LightSprite extends UIComponent 
	{
		// import the sprites...
		[Bindable]
		[Embed(source="../assets/sprite1.png")]
		public var spriteOne:Class;
		
		[Bindable]
		[Embed(source="../assets/sprite1light.png")]
		public var spriteOneLight:Class;
		
		[Bindable]
		[Embed(source="../assets/Assets.swf", symbol="sprite2")]
		public var sprite2:Class;
		
		[Bindable]
		[Embed(source="../assets/Assets.swf", symbol="sprite2light")]
		public var sprite2light:Class;
		
		[Bindable]
		[Embed(source="../assets/Assets.swf", symbol="selected")]
		public var hsAsset:Class;						
										
		private var hs:MovieClipAsset = MovieClipAsset(new hsAsset());
		private var sprite:MovieClipAsset;
		private var spriteLight:MovieClipAsset;
		
		private var selected:Boolean = false;
		
		// every instance registers here (to have access to the rest)
		static private var instances:Array = [];
		
		// should be called affer attaching on the display
		public function init(spriteId:String):void {
			instances.push(this);
			
			import mx.core.MovieClipAsset;
			switch (spriteId) {
				case '1':
					sprite = MovieClipAsset(new spriteOne()); // <-- fails to "coerce" to MC Asset
					spriteLight = MovieClipAsset(new spriteOneLight()); // <-- fails to "coerce" to MC Asset
					break;
				case '2':
					sprite = MovieClipAsset(new sprite2()); // <-- fails to "coerce" to MC Asset
					spriteLight = MovieClipAsset(new sprite2light()); // <-- fails to "coerce" to MC Asset
					break;				
			}

// NOTE: if I type up there "new hsAsset()" it will NOT fail! It'll work !?

			// attach on display
			addChild(sprite);
			addChild(spriteLight);
			spriteLight.blendMode = 'add';
			addChild(hs);
			hs.gotoAndStop(1);
			hs.alpha = 0;
			hs.addEventListener(MouseEvent.ROLL_OVER, onRollOver, false, 0, true);
			hs.addEventListener(MouseEvent.ROLL_OUT, onRollOut, false, 0, true);				
			hs.addEventListener(MouseEvent.CLICK, onClick, false, 0, true);
			hs.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown, false, 0, true);
			hs.addEventListener(MouseEvent.MOUSE_UP, onMouseUp, false, 0, true);		
		}
		 
		// called for all other sprites when this is selected
		public function deselect():void
		{
			hs.alpha = 0;
			selected = false;
		}
		private function onRollOver():void
		{
			if (!selected) {
				hs.alpha = 100;
				hs.gotoAndStop(1);
			}
		}
		private function onRollOut():void
		{
			if (!selected) {
				hs.alpha = 0;
			}
		}
		
		private function onMouseDown():void
		{
			if (selected) startDrag();
		}
		private function onMouseUp():void
		{
			if (selected) stopDrag();
		}
		
		private function onClick():void
		{
			if (!selected) {
				for (var i:Object in instances) {
					instances[i].deselect();
				}
				selected = true;
				hs.alpha = 100;
				hs.gotoAndStop(2);
			}
		}	
	}
}