-
-
Bearded (M|G)od
You need to return the Sprite from that function to be able to use it access it later:
PHP Code:
function makeSquare(sgu:String,clo:uint):Sprite { var squ:Sprite = new Sprite(); squ.graphics.lineStyle(1,0x000000); squ.graphics.beginFill(clo); squ.graphics.drawRect(0,0,100,100); squ.graphics.endFill(); squ.x = Math.round(Math.random() * 550); squ.y = Math.round(Math.random() * 400); return squ; }
var mySquare:Sprite = makeSquare("Something", 0); addChild(mySquare); removeChild(mySquare);
-
Deleting multiple shapes on stage or button click
Hello,
I used your method in a similar way to draw a triangle pointing to buttons as I pick each.
I would like the fill shape to clear or disappear as I pick on stage or another button, but I get an errors about null ref.
I'm still fair new at as3.
I got it to work somewhat, but not smooth. I have about 100 buttons on stage, each calling the function "onClick". It only works if I roll out of the fill. Roll_Out was the best event I thought.
Code:
staff099.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void {
//tell me what button was picked and get its stage xy.
var buttonPicked:String = e.target.name;
var buttonPickLocX = e.stageX;
var buttonPickLocY = e.stageY;
trace( "x location: " + buttonPickLocX + " y= " + buttonPickLocY);
//sub function
function makeFillPointer(sgu:String, clo:uint):Sprite {
var myFillPointer:Sprite = new Sprite();
myFillPointer.graphics.lineStyle(1, 0x996666, 100);
myFillPointer.graphics.beginFill(0xD6D6D6, 0.6);
myFillPointer.graphics.moveTo(288, 50);
myFillPointer.graphics.lineTo(buttonPickLocX, buttonPickLocY);
myFillPointer.graphics.lineTo(288, 360);
myFillPointer.graphics.endFill();
return myFillPointer;
}
var myPointer:Sprite = makeFillPointer("Something", 0);
addChild(myPointer);
myPointer.addEventListener(MouseEvent.ROLL_OUT, onFillOut);
function onFillOut(e:MouseEvent):void {
removeChild(myPointer);
}
}
It might be a case of private vs public function, but I have't got a good handle on mixing the two.
Thanks for your help!
-
Code:
var myPointer:Sprite;
var btns:Array = ["staff099","staff098"];
stage.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void {
if (btns.indexOf(e.target.name) > -1) {
clearPointer(e);
var buttonPicked:String = e.target.name;
var buttonPickLocX:int = e.stageX;
var buttonPickLocY:int = e.stageY;
trace( "x location: " + buttonPickLocX + " y= " + buttonPickLocY);
myPointer = makeFillPointer("Something",buttonPickLocX,buttonPickLocY,0);
addChild(myPointer);
e.target.addEventListener(MouseEvent.ROLL_OUT, clearPointer, false, 0, true);
}
}
function makeFillPointer(sgu:String, locX:int, locY:int, clo:uint):Sprite {
var myFillPointer:Sprite = new Sprite();
myFillPointer.graphics.lineStyle(1, 0x996666, 100);
myFillPointer.graphics.beginFill(0xD6D6D6, 0.6);
myFillPointer.graphics.moveTo(288, 50);
myFillPointer.graphics.lineTo(locX, locY);
myFillPointer.graphics.lineTo(288, 360);
myFillPointer.graphics.endFill();
myFillPointer.mouseEnabled = false;
return myFillPointer;
}
function clearPointer(e:MouseEvent):void {
if (myPointer) {
e.target.removeEventListener(MouseEvent.ROLL_OUT, clearPointer);
myPointer.parent.removeChild(myPointer);
myPointer = null;
}
}
-
Originally Posted by dawsonk
Code:
var myPointer:Sprite;
var btns:Array = ["staff099","staff098"];
Thanks for the extra tip Dawsonk. This works perfect.
Appreciate it!
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|