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);
}
}
}
}