你如何删除一个点?
Posted
技术标签:
【中文标题】你如何删除一个点?【英文标题】:How do you remove a point? 【发布时间】:2013-03-11 08:00:29 【问题描述】:如何删除一个点?我已经在网上搜索了所有内容,但是我找不到解决方案... 我的代码简单来说:
创建变量:
var point1:Point=new Point();
var point2:Point=new Point();
var bullet:MovieClip=new bullet;
var box:MovieClip=new box;
设置框和点的位置
box.x=200;
box.y=200;
point2.x=200;
point2.y=200;
设置子弹的速度:
bullet.speedX=10;
向舞台添加监听器:
stage.addEventListener(Event.ENTER_FRAME, inToFrame)
function inToFrame (evt:Event)
bullet.x+=bullet.speedX;
point1.x=bullet.x;
point1.y=bullet.y;
if(Point.distance(point1,point2)<10)
if(this.contains(bullet))
removeChild(bullet);
//And here I want one of the two points to be removed
if(this.contains(box))
removeChild(box);
【问题讨论】:
Point 类不能放在舞台上(help.adobe.com/en_EN/FlashPlatform/reference/actionscript/3/…,不是 DisplayObject)。这只是抽象的结构。舞台上没有积分!那么,你想真正删除什么? 感谢@Smolniy,我只是不希望该点下次在彼此相距 10 的半径内时与另一点交互。 但是我得到了答案,谢谢@Pier! :) 【参考方案1】:他们甚至不在舞台上,Point
不是显示对象,不能添加到舞台上。
编辑 只需将point1
设置回初始位置,例如 0,0,这样它就不会在下一次检查时进入 if 语句。或者最好在检查两点之间的距离之前检查子弹是否在舞台上
if(bullet.parent && Point.distance(point1,point2)<10)
if(this.contains(bullet))
removeChild(bullet);
//And here I want one of the two points to be removed
if(this.contains(box))
removeChild(box);
【讨论】:
我明白了,它仍然不能解决我的问题。基本概念是,一个带有一个点的子弹向一个物体发射,该物体也带有一个点。当两个点彼此相距一定半径时,对象和点都将被破坏。我只能销毁对象,它是一个影片剪辑。 它不能解决您的问题,因为您显示的代码不足以确定您需要做什么 就像@Daniel 说的那样,您没有显示将项目符号添加到阶段的代码,您不想删除要从阶段中删除项目符号的点。如果您有bullet
,那么只需在 if 语句中执行 stage.removeChild(bullet);
好的,现在我已经更新了代码。我的问题不是我不能移除孩子,而是当我这样做时,点仍然存在,所以如果我发射新子弹,它会在接近剩余点时消失以上是关于你如何删除一个点?的主要内容,如果未能解决你的问题,请参考以下文章