使用ActionScript 3创建5个随机元素

时间:2014-04-14 19:13:29

标签: actionscript-3

我的要求:

  • 他们需要在随机位置创建。
  • 您应该可以点击并移动它们。
  • 一旦他们互相接触,你就再也无法移动他们了。
  • 一旦触摸它们就会改变颜色。

现在这是我的代码,但它不断创建无限量的球

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;

//Criação das variavéis
var bolas:Array = new Array();

stage.addEventListener(MouseEvent.MOUSE_DOWN, startdd);
stage.addEventListener(MouseEvent.MOUSE_UP, stopdd);

function startdd(e:MouseEvent)
{
e.target.startDrag();
}

function stopdd(e:MouseEvent)
{
    e.target.stopDrag();
    }


    for (var i:int = 0; i < 5; i++)
    {
    var ball:bolamc = new bolamc();
    ball.x = Math.random() * (stage.stageWidth - ball.width);
    ball.y = Math.random() * (stage.stageHeight - ball.height);
    bolas.push(ball);
    stage.addChild(ball);
    }

ps:我的朋友正在使用相同的代码并且它正常工作(制作5个球,他可以移动它们)

1 个答案:

答案 0 :(得分:2)

您需要自己编写大部分代码,但我可以给您一些指导。

要在屏幕上的随机位置创建元素,您可以使用Math.random()。例如:

var newElement:Element = new Element();
newElement.x = Math.random()*STAGE_WIDTH_GOES_HERE;
newElement.y = Math.random()*STAGE_HEIGHT_GOES_HERE;
addChild(newElement);

点击并拖动here's a nice tutorial on Kirupa。您可能需要对其进行调整以使其适用于多个对象。

对于命中碰撞,您可以遍历元素并使用hitTestObject()来确定它们的边界框是否相互接触。如果您需要更高的精度,可以尝试像this这样的像素完美碰撞类。

要更改对象的颜色,可以使用Color Transform,其中包含RepublicOfCode的教程。以下是该页面的一些基本示例代码:

var myColorTransform = new ColorTransform();
myColorTransform.color = 0xFFFFFF;
myTargetObject.transform.colorTransform = myColorTransform;