语法错误 - rightparen - ActionScript 3 - 使用数组
Posted
技术标签:
【中文标题】语法错误 - rightparen - ActionScript 3 - 使用数组【英文标题】:Syntax error - rightparen - ActionScript 3 - using an array 【发布时间】:2017-10-17 08:03:24 【问题描述】:我正在创建一个自定义的 Adobe Connect 窗格,在 AS3 中进行简单的拖放操作 - 目前可以在 Adobe Connect 中使用,并且没有错误。但它不适用于 SyncConnector 元素,这正是我苦苦挣扎的地方。
我在其他地方找到了一篇帖子,建议将我的每个拖放项目用作一个数组。我在代码的顶部设置了一个数组,然后是拖放代码,最后是 Sync 的最后部分。我收到“在点之前期望右括号”的语法错误,这对我来说 - 令人困惑 - 因为我对 AS3 很陌生。
非常感谢有人向我展示我需要的正确代码,因为我并不完全理解这些术语。我确实需要为我拼写出来。完整代码如下,如果这不是一个简单的解决方案,很乐意为某人付出时间:
import com.adobe.sync.components.SyncConnector;
import com.adobe.sync.events.SyncSwfEvent;
var connector:SyncConnector;
function init(c:SyncConnector):void
connector=c;
// Keep stage reference here.
var draggedStage:Stage;
// Keep dragged item reference here.
var draggedItem:InteractiveObject;
// The list of items to drag.
var aList:Array =
[
AirBP,PetroChem,LiquifiedGas,Exploration,Plastic,
BiofuelsFarm,Trading,Electricity,Development,
Production,Distribution,Lubes,Retail,Shipping,
Refining,BPMarine,Terminal,Terminal2,Pipeline,
Pipeline2,SugarCane,WindPower
];
// Subscribe all items for MOUSE_DOWN event.
for each (draggedItem in aList)
draggedItem.addEventListener(MouseEvent.MOUSE_DOWN, onDrag);
function onDrag(e:MouseEvent):void
// Get the source of event.
draggedItem = e.target as InteractiveObject;
draggedItem.startDrag();
// Hook the stage events for MOUSE_UP event. You can skip using "draggedStage"
// if you are sure that stage reference is always available.
draggedStage = dtaggedItem.stage;
draggedStage.addEventListener(MouseEvent.MOUSE_UP, onDrop);
function onDrop(e:MouseEvent):void
// Stopp dragging things.
draggedItem.stopDrag();
// Unhook stage for it is no longer needed.
draggedStage.removeEventListener(MouseEvent.MOUSE_UP, onDrop);
// Forget the references.
draggedItem = null;
draggedStage = null;
connector.dispatchSyncMessage("dragdrop", myObj, true);
connector.addEventListener(SyncSwfEvent.SYNC_MSG_RCVD, mouseListen);
function mouseListen(e.SyncSwfEvent):void
if (e.data.msgNm == "dragdrop")
myObj = e.data.msgVal as Array;
【问题讨论】:
【参考方案1】:这个建议完全正确。让你的代码更简单,因为在他们看起来很相似的那一大块代码中很容易错过语法错误。你所有不可读的听众都应该用这个替换:
// Keep stage reference here.
var draggedStage:Stage;
// Keep dragged item reference here.
var draggedItem:InteractiveObject;
// The list of items to drag.
var aList:Array =
[
AirBP,PetroChem,LiquifiedGas,Exploration,Plastic,
BiofuelsFarm,Trading,Electricity,Development,
Production,Distribution,Lubes,Retail,Shipping,
Refining,BPMarine,Terminal,Terminal2,Pipeline,
Pipeline2,SugarCane,WindPower
];
// Subscribe all items for MOUSE_DOWN event.
for each (draggedItem in aList)
draggedItem.addEventListener(MouseEvent.MOUSE_DOWN, onDrag);
function onDrag(e:MouseEvent):void
// Get the source of event.
draggedItem = e.target as InteractiveObject;
draggedItem.startDrag();
// Hook the stage events for MOUSE_UP event. You can skip using "draggedStage"
// if you are sure that stage reference is always available.
draggedStage = draggedItem.stage;
draggedStage.addEventListener(MouseEvent.MOUSE_UP, onDrop);
function onDrop(e:MouseEvent):void
// Stopp dragging things.
draggedItem.stopDrag();
// Unhook stage for it is no longer needed.
draggedStage.removeEventListener(MouseEvent.MOUSE_UP, onDrop);
// Forget the references.
draggedItem = null;
draggedStage = null;
我的另一个与拖放相关的答案在这里:https://***.com/a/42542667/4687633
【讨论】:
感谢您抽出宝贵时间,非常感谢。我刚刚添加了您的代码,但我仍然收到“在点之前期望右括号”错误。有什么帮助吗? 你应该用我的代码替换你的代码,而不是添加它。 你好,我换成你的代码,还是一样的错误。我需要保留代码的最顶部以导入 adobe flash 事件以允许它在 Adobe Connect 中播放。我还需要保持最底层来搜索数组。我将更新主消息中的代码以显示它现在的样子,但这仍然会显示原始错误消息。有什么想法吗? @Newtothis 是框架脚本还是类? 我不知道如何找到它。从字面上看,我已经进入 AS3 几天了,所以我很新,也很缺乏经验。正如我所说,很高兴花一个小时的时间来修复我的代码并帮助我使同步连接器功能正常工作。【参考方案2】:此错误通常表示存在语法错误。请更改
function mouseListen(e.SyncSwfEvent):void
到
function mouseListen(e:SyncSwfEvent):void
【讨论】:
以上是关于语法错误 - rightparen - ActionScript 3 - 使用数组的主要内容,如果未能解决你的问题,请参考以下文章