求助各位大神
本帖最后由 SUPERSEIYA 于 2023-4-15 10:53 编辑请问两椭圆相碰撞用AS3如何实现?
import flash.display.MovieClip;
import flash.display.Shape;
var myshape: Shape = new Shape();
mc0.addEventListener(MouseEvent.MOUSE_DOWN, dw);
mc0.addEventListener(MouseEvent.MOUSE_UP, up);
function dw(e: MouseEvent): void {
e.currentTarget.startDrag()
}
function up(e: MouseEvent): void {
e.currentTarget.stopDrag()
}
stage.addEventListener(Event.ENTER_FRAME, jc)
function jc(e: Event): void {
if (hitTest(mc0, mc1)) {
mc0.gotoAndStop(2)
mc1.gotoAndStop(2)
} else {
mc0.gotoAndStop(1)
mc1.gotoAndStop(1)
}
}
function hitTest(a: MovieClip, b: MovieClip): Boolean {
var X1: Number = a.x + Math.cos(Math.atan2(b.y - a.y, b.x - a.x)) * a.width / 2
var Y1: Number = a.y + Math.sin(Math.atan2(b.y - a.y, b.x - a.x)) * a.height / 2
var X2: Number = b.x + Math.cos(Math.atan2(a.y - b.y, a.x - b.x)) * b.width / 2
var Y2: Number = b.y + Math.sin(Math.atan2(a.y - b.y, a.x - b.x)) * b.height / 2
var Dis: Number = Math.sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
var R1: Number = Math.sqrt((X1 - a.x) * (X1 - a.x) + (Y1 - a.y) * (Y1 - a.y));
var R2: Number = Math.sqrt((X2 - b.x) * (X2 - b.x) + (Y2 - b.y) * (Y2 - b.y));
myshape.graphics.clear()
myshape.graphics.lineStyle(2, 0x000000)
myshape.graphics.moveTo(a.x, a.y)
myshape.graphics.lineTo(b.x, b.y)
aa.x = X1
aa.y = Y1
bb.x = X2
bb.y = Y2
if (Dis <= R1 + R2) {
return true
}
return false
}
addChild(myshape)
为什么我这么写不行?
页:
[1]