我有大约50个符号,我想让它成为可拖动的。没什么好看的,只需点击它并将其拖到不同的位置。
我找到了as3代码,但是当我将其粘贴到我的文件中时,它会给我错误:
**Error** Scene=Scene 1, layer=Units, frame=1:Line 9: The class or interface 'MouseEvent' could not be loaded.
function mouseDownHandler(evt:MouseEvent):void {
该代码是:
// Register mouse event functions
fighter_uk.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
fighter_uk.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
fighter_uk.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
fighter_uk.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
// Define a mouse down handler (user is dragging)
function mouseDownHandler(evt:MouseEvent):void {
var object = evt.target;
// we should limit dragging to the area inside the canvas
object.startDrag();
}
function mouseUpHandler(evt:MouseEvent):void {
var obj = evt.target;
obj.stopDrag();
}
我正在使用flash pro 8,所以我尝试找到as2代码但找不到它。
此外,是否有一种“简单”的方式来编码所有50个对象?
答案 0 :(得分:0)
我认为您正在尝试使用AS2编译器编译AS3代码。尝试将编译设置更改为目标AS3。 此外,您可能需要在代码顶部包含类导入:
import flash.events.MouseEvent;
要拖动50个对象,将它们全部添加到同一容器精灵上,并将侦听器添加到容器精灵中:
var holder:Sprite = new Sprite();
for ( var i:int = 0, l:int = 50; i < l; i++ ) {
var dragee:YOUR_CUSTOM_OBJECT = new YOUR_CUSTOM_OBJECT();
holder.addChild(dragee);
}
addChild(holder);
holder.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
holder.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
holder.addEventListener(Event.MOUSE_LEAVE, mouseUpHandler);
var currentDragee:YOUR_CUSTOM_OBJECT = null;
function mouseDownHandler(evt:MouseEvent):void {
currentDragee = evt.target as YOUR_CUSTOM_OBJECT;
if ( currentDragee !== null ) {
currentDragee.startDrag();
holder.addChild(currentDragee); // bring current to front position
}
}
function mouseUpHandler(evt:Event):void {
if ( currentDragee !== null ) currentDragee.stopDrag();
currentDragee = null;
}
YOUR_CUSTOM_OBJECT是您需要拖动的对象类。希望它有所帮助!
答案 1 :(得分:0)
This页似乎有你想要的答案(AS2拖放)。如果您已经看过它,那么您需要解释为什么它不能满足您的需求。
如果要在AS2中拖放多个实例,您仍然可以将代码添加到movieClip符号,从库中导出并使用attachMovie(所有50个)加载实例。如果它们都不同,则根据需要将代码附加到剪辑本身,或者附加到其他地方的某些功能,这些功能将捕获所有点击并决定点击的内容。这在AS2中非常可行。
请记住,您可以使用onClipEvent(加载)功能设置很多初始提升。
这是我在AS2中制作节点树的sample。它全部可拖动(鼠标拖动)和可缩放(使用鼠标滚轮)。您可以通过单击节点框中的小向下箭头来添加节点。每个节点都在监听鼠标。
您希望在大多数情况下查看此部分:
// Enable drag on button press
on (press)
{
startDrag(this);
}
// Stop the drag on release of mouse button
on (release)
{
stopDrag();
}
除此之外,我不确定你的设置看起来如何,所以我希望这有助于让球滚动。 (检查链接,那里有很多小宝石)。
答案 2 :(得分:0)
Flash Professional 8仅支持ActionScript 2&amp; 1 您可以关注此官方URL并了解如何在ActionScript 2中执行此操作,但我建议您使用ActionScript 3。