AS3 - 获取边缘坐标

Abd*_*lla 1 actionscript-3

我正试图沿着movieclip Ground的边界移动movieclip Ball.您可以使用箭头键移动球,这将增加和减少其x值,但y值将始终等于地面动画片段的上边缘.

为此,我需要找到movieclip Ground边缘点的y值.这怎么可能? 地面MovieClip

这就是Ground MovieClip的样子.它是不规则的形状.我想要的是在这个形状的顶部边缘的任何x点yy点.

Geo*_*nza 5

如果这是你想要做的,它应该很容易来循环您的位图数据的列并为每个商店Ÿ值可以在以后引用获得ŸX.这是一个基本的例子:

//get values
var bitmapData:BitmapData = new Terrain(480,320);//Terrain is a reference to your image as BitmapData
var yValues:Vector.<Number> = new Vector.<Number>(bitmapData.width,true);

for(var i:int = 0 ; i < bitmapData.width ; i++){
    for(var j:int = 0 ; j < bitmapData.height; j++){
        //this conditions might change based on the content of your image, black if fine for now
        if(bitmapData.getPixel(i,j) == 0) {
            yValues[i] = j;
            j = bitmapData.height;
        }else yValues[i] = bitmapData.height;
    }
}
//test values
var bitmap:Bitmap = new Bitmap(bitmapData);
var ball:Sprite = new Sprite();ball.graphics.lineStyle(5,0x009900);ball.graphics.drawCircle(-5,-5,5);
addChild(bitmap);
addChild(ball);

addEventListener(Event.ENTER_FRAME, update);

function update(event:Event):void {
    ball.x = mouseX;
    if(mouseX > 0 && mouseX <= bitmap.width) ball.y = yValues[mouseX];
}
Run Code Online (Sandbox Code Playgroud)

地形

如果您想在运行时滚动地形而不是"缓存值",则可以循环显示一列像素(宽度为1且高度等于地形位图的位图数据)并立即获取值.

你的hitTestPoint()建议也很好.请记住,BitmapData类也有一个hitTest方法.查看Mike Chamber的帖子.

此外,您可能想看看Corey的碰撞检测套件

HTH