Flex 3 TileList拖放/重新排序异常。如何重新排列瓷砖?

时间:2009-06-08 19:24:04

标签: flex actionscript-3 air tilelist

我需要一些可怕的帮助。我正在Flex 3中编写一个应用程序,该应用程序利用带有自定义itemRenderer的TileList来显示来自服务的信息。不幸的是,我遇到了TileList的拖放/重新排列部分的异常。使用dragEnabled和dragMoveEnabled,我在尝试重新排列控件中的tile时收到完全可重现的异常:

例外:

  

ArgumentError:错误#2004:其中一个参数无效。       在flash.utils :: ByteArray / writeObject()       在flash.desktop :: Clipboard / putSerialization()       在flash.desktop :: Clipboard / convertFlashFormat()       在flash.desktop :: Clipboard / setData()       在mx.managers :: NativeDragManagerImpl / doDrag()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ airframework \ src \ mx \ managers \ NativeDragManagerImpl.as:282]       在mx.managers :: DragManager $ / doDrag()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ framework \ src \ mx \ managers \ DragManager.as:243]       在mx.controls.listClasses :: ListBase / dragStartHandler()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ framework \ src \ mx \ controls \ listClasses \ ListBase.as:9085]       在flash.events::EventDispatcher/dispatchEventFunction()       at flash.events::EventDispatcher/dispatchEvent()       在mx.core :: UIComponent / dispatchEvent()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ framework \ src \ mx \ core \ UIComponent.as:9298]       在mx.controls.listClasses :: ListBase / mouseMoveHandler()[C:\ autobuild \ 3.2.0 \ frameworks \ projects \ framework \ src \ mx \ controls \ listClasses \ ListBase.as:8822]

以下是自定义TileList的代码:

<cmp:MemoTileList itemRenderer="CoverNote" dragEnabled="true" itemsChangeEffect="{this.myTileListEffect}" backgroundAlpha="0" id="memoList" dataProvider="{this.management.memoCollection}" right="0.049865723" left="0.05" top="0" bottom="0" focusEnabled="false" focusAlpha="0" borderStyle="none" direction="horizontal" textAlign="left" allowMultipleSelection="false" showEffect="fadeIn" hideEffect="fadeOut" effectEnd="fadeOut" effectStart="fadeIn" dragDrop="onReorder(event)" dragMoveEnabled="true">
</cmp:MemoTileList>

以下是onReorder(事件)的代码:

private function onReorder(event:DragEvent):void{
            var indexStartDrag:Number = event.currentTarget.selectedIndex
            var indexStopDrag:Number = this.memoList.calculateDropIndex(event);
            Alert.show(indexStopDrag.toString());

}

当我尝试调试时,调试器似乎并没有向我指出任何可能有问题的代码。

有人能指出我如何解决这个问题的正确方向吗?

提前致谢!

Tajddin

1 个答案:

答案 0 :(得分:0)

ArgumentError: Error #2004: One of the parameters is invalid.

其中一个“可以是什么”的消息;(

我记得我很久以前就已经有了它,拼错了一些函数而且Eclipse编译得很好,即使它不应该......(eclipse的重启帮助了这里,但是在我发现之前我花了一段时间... )。

我的建议是删除代码,直到它工作并重新添加它,同时检查参数数量。它肯定是一个“怪异”的错误,你知道其中一个,“必须按照一定的顺序调用这两个函数”等等。祝你好运!

关于#2004;

的其他故事

http://www.coldfusioncommunity.org/profiles/blog/show?id=1439641%3ABlogPost%3A14565 http://blog.3alves.com/blog/post/2007/09/19/argumenterror-error-2004.aspx

这个很有趣; http://code.google.com/p/flexlib/issues/detail?id=113#c3