i'm missing something fundamental here. i have a very simple custom class that draws a circle and a checkbox, and only allows dragging of that circle sprite if the checkbox is checked. a checkbox component is manually added to the library in my .fla.
from my .fla project's actions panel:
var ball:DragBall = new DragBall();
addChild(ball);
my custom class .as file (located in the same folder as the .swf)
package
{
import fl.controls.CheckBox;
import flash.display.Sprite;
import flash.events.MouseEvent;
public class DragBall extends Sprite
{
private var ball:Sprite;
private var checkBox:CheckBox;
public function DragBall():void
{
drawTheBall();
makeCheckBox();
assignEventHandlers();
}
private function drawTheBall():void
{
ball = new Sprite();
ball.graphics.lineStyle();
ball.graphics.beginFill(0xB9D5FF);
ball.graphics.drawCircle(0, 0, 60);
ball.graphics.endFill();
ball.x = stage.stageWidth / 2 - ball.width / 2;
ball.y = stage.stageHeight / 2 - ball.height / 2;
ball.buttonMode = true;
addChild(ball);
}
private function makeCheckBox():void
{
checkBox = new CheckBox();
开发者_高级运维 checkBox.x = 10;
checkBox.y = stage.stageHeight - 30;
checkBox.label = "Allow Drag";
checkBox.selected = false;
addChild(checkBox);
}
private function assignEventHandlers():void
{
ball.addEventListener(MouseEvent.MOUSE_DOWN, dragSprite);
ball.addEventListener(MouseEvent.MOUSE_UP, dropSprite);
}
private function dragSprite(evt:MouseEvent):void
{
if (checkBox.selected) {ball.startDrag();}
}
private function dropSprite(evt:MouseEvent):void
{
if (checkBox.selected) {ball.stopDrag();}
}
}
}
compiling from the .fla results in the following error, which i don't understand
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at DragBall/drawTheBall()
at DragBall()
at DragBall_fla::MainTimeline/frame1()
The problem here is that you are trying to access the stage before it is available to this class. The best way to do this is add an Event listener in your constructor for Event.ADDED_TO_STAGE and then once this event occurs setting the x and y relative to the stage.
精彩评论