SUPERSEIYA 发表于 2023-4-15 10:38:35

求助各位大神

本帖最后由 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]
查看完整版本: 求助各位大神

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)