【发布时间】:2018-09-09 15:12:05
【问题描述】:
我正在构建一个 Flash 桌面应用程序,用户需要使用一条线路(或任何可以完成这项工作的设备)在舞台上(一台计算机和一台路由器)链接两个 Movieclip,我想达到同样的效果: image1。我搜索并找到了这个solution,我尝试了代码并做了一些修改:
link.addEventListener(MouseEvent.CLICK, linkOnClick);
function linkOnClick(e:MouseEvent){
this.addEventListener(Event.ENTER_FRAME, enterFrame);
var linkPoint:Point = new Point(link.x, link.y);
var mousePoint:Point = new Point();
var distance:Number;
var radians:Number;
function enterFrame(e:Event):void {
//Distance
mousePoint.x = stage.mouseX;
mousePoint.y = stage.mouseY;
distance = Point.distance(linkPoint, mousePoint);
link.width = distance;
//Rotation
radians = Math.atan2(stage.mouseY - link.y, stage.mouseX - link.x);
link.rotation = radians * (180/ Math.PI);
if(link.hitTestObject(router)){trace("Success");}
}
当我编译代码时,我得到了这个:image2,所以你可能会说,我发现的问题是:
1-线条的边缘跟随鼠标的方向,但有时会超出光标,我希望光标拖动线条的边缘。
2-线条改变它的宽度,如果它是 90°,线条宽度非常显着,我希望线条具有恒定的宽度。
我怎样才能达到与 image1 相同的效果?
【问题讨论】:
-
我建议通过每帧重画一条线而不是通过转换预定义的图形来实现。
-
你能给我们一个代码示例吗?
-
stackoverflow.com/questions/15035665/… 但不是连续绘制,您需要清除并从开始位置重新绘制到鼠标指针。
-
谢谢,我尝试了代码,但这个解决方案似乎没有画一条直线,因为我想要一条直线跟随光标到目标,知道如何使用它实现我的目标?
标签: actionscript-3 flash actionscript