好的,对不起,如果这是一个非常容易回答的问题,但是我浏览了谷歌上的页面和页面,找不到任何有些相关的内容。我得到了很多帮助,但我仍然无法让这部分ActionScript正常工作。我有一个程序,在运行时,允许我在鼠标点击时绘制随机颜色方块。我添加了一个按钮,它应该能够将被绘制的形状从矩形更改为圆形。我似乎无法使用该按钮。这就是我的代码到目前为止的样子。
var color:Number;
stage.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing);
stage.addEventListener(MouseEvent.MOUSE_UP, stopDrawing);
function startDrawing(e:MouseEvent):void {
stage.addEventListener(MouseEvent.MOUSE_MOVE, makeShapes);
color = Math.random() * 0xFFFFFF;
}
function stopDrawing(e:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_MOVE, makeShapes);
}
function makeShapes(e:MouseEvent):void {
var rect:Rect = new Rect(10,10,color);
addChild(rect);
rect.x = mouseX;
rect.y = mouseY;
}
shape_btn.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
}
在底部,我把它留空了,似乎是我被困住的部分。我已经尝试过简单地将VAR设置为我所做的“Ellipse”类,这使得它可以工作,但只有一次当我点击按钮时。它不会留下一个圆圈,让我可以画出形状。我很抱歉,我觉得我已经非常接近解决方案了,然后我撞墙了。
答案 0 :(得分:0)
很难理解困难是什么,但我会尝试解决我的理解。
首先,阶段鼠标按下事件将捕获您的按钮事件,因此您可以摆脱它并坚持一个鼠标事件。
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
private function onMouseDown(ev:Event):void
{
if (ev.target==shape_btn)
changeShape();
else if (ev.target==stage)
startDrawing();
}
或者那些东西。 其次,我不知道Rect是什么。这是一个你有权访问的课程吗?这就是我没有特殊课程的方式:
private function makeShape():void
{
switch (shapeType)
{
case "rect":
drawRect();
break;
case "circle":
drawCircle();
break;
}
}
private function drawRect():void
{
var rect:Shape = new Shape();
rect.graphics.beginFill(color);
rect.graphics.drawRect(0, 0, 10, 10);
rect.x = mouseX;
rect.y = mouseY;
addChild(rect);
}
private function drawCircle():void
{
var circle:Shape = new Shape();
circle.graphics.beginFill(0xff0000);
circle.graphics.drawCircle(0, 0, 10);
circle.x = mouseX;
circle.y = mouseY;
addChild(circle);
}
最后,changeShape函数:
private function changeShape():void
{
shapeType = shapeType=="rect"?"circle":"rect";
}
有更好的方法可以解决它,但在处理两种形状类型时,这是可以接受的。
当然,你需要在代码中的某个地方,在函数之外的某处使用var shapeType:String =“rect”。
我还认为颜色随机化应该在鼠标移动处理程序中,而不是鼠标单击。这是故意的吗?