在 Adobe Flash CS3 Actionscript 中拖动多个项目
Posted
技术标签:
【中文标题】在 Adobe Flash CS3 Actionscript 中拖动多个项目【英文标题】:Dragging more than one item in Adobe Flash CS3 Actionscript 【发布时间】:2011-08-12 03:09:41 【问题描述】:我一直在尝试在数字媒体课程上编写游戏,但在可拖动项目方面遇到了巨大障碍。我首先设法使用此代码制作了一个可以用鼠标拖动的项目(影片剪辑称为“蜂蜜”):
//set listeners
honey.addEventListener(MouseEvent.MOUSE_DOWN, startHoneyDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, stopHoneyDrag);
honey.addEventListener(Event.ENTER_FRAME, dragHoney);
//offset between sprite location and click
var clickOffset:Point = null;
//user clicked
function startHoneyDrag(event:MouseEvent)
clickOffset = new Point(event.localX, event.localY-7);
//user released
function stopHoneyDrag(event:MouseEvent)
clickOffset = null
//run every frame
function dragHoney(event:Event)
if (clickOffset != null) // must be dragging
honey.x = mouseX - clickOffset.x;
honey.y = mouseY - clickOffset.y;
然而,到目前为止,制作多个可移动的影片剪辑已被证明是不可能的。由于代码的冲突部分,多次使用相同的代码会产生错误。当我问一个更好的编程学生时,他告诉我创建一个数组,我照做了;
var honeyBall:Array = new Array();
honeyBall = ["honey, honey1, honey2"];
但现在我不知道如何让引用影片剪辑的代码引用它们的数组。非常感谢您的帮助,因为这些问题给我带来了严重的麻烦。
【问题讨论】:
【参考方案1】:honeyBall = ["honey, honey1, honey2"];
这是一个包含一个字符串的数组。您应该将剪辑实例放入数组中,如下所示:
honeyBall = [honey1, honey2, honey3];
然后你拖动它
function dragHoney(event:Event)
if (clickOffset != null)
for each (var honey:DisplayObject in honeyBall)
honey.x = mouseX - clickOffset.x;
honey.y = mouseY - clickOffset.y;
(将拖动数组中的所有内容,无论是一个还是多个剪辑。)
【讨论】:
以上是关于在 Adobe Flash CS3 Actionscript 中拖动多个项目的主要内容,如果未能解决你的问题,请参考以下文章
在 Adobe CS4 上设置 GAforflash 时遇到问题
Adobe Flash CS3 Professional - 缺少 DirectShow 9 和 QuickTime 7
在 Adobe 和浏览器都将结束 Adobe Flash 之后,有啥方法可以运行 Web 应用程序