gpt4 book ai didi

migration - 将代码从 OpenLaszlo 3.3 迁移到 5.0 : TypeError #1007 Instantiation attempted on a non-constructor.

转载 作者:行者123 更新时间:2023-12-04 18:13:49 27 4
gpt4 key购买 nike

我最近将部分代码从 OL 3.3 移植到 OL 5.0。我认为一切都会正常,但是当我尝试使用 ant 脚本运行它时,我得到了这个错误。

 [echo] C:\Program Files\OpenLaszlo Server 5.0.x\Server\lps-5.0.x/WEB-INF/lps/server/bin/lzc.bat
[exec] Compiling: C:\Workspace\application\client\src\TestClient.lzx to TestClient.swf10.swf
[exec] compiler output is Loading configuration file C:\Program Files\OpenLaszlo Server 5.0.x\Server\lps-5.0.x\WEB-INF\frameworks\flex-config.xml
[exec] C:\Documents and Settings\310773\Local Settings\Temp\lzswf9\Workspace\application\client\src\build\TestClient\app.swf (289808 bytes)

所以,我拿了这个文件夹,直接在 Laszlo 中编译了它。它没有显示任何错误,但是当 swf 即将加载主页时,我收到此错误。知道为什么吗?
TypeError: Error #1007: Instantiation attempted on a non-constructor.
at $lzc$class__mvz/$mvx()
at LzNode/__LZresolveReferences()
at LzNode/__LZcallInit()
at LzCanvas/__LZcallInit()
at LzCanvas/__LZinstantiationDone()
at LzInstantiatorService/makeSomeViews()
at LzInstantiatorService/checkQ()
at Function/http://adobe.com/AS3/2006/builtin::call()
at LzEvent/sendEvent()
at LzIdleKernel$/__update()

最佳答案

这是您尝试实例化未定义的类时收到的错误消息。这是一个例子:

<canvas>

<class name="myclass">
<handler name="oninit">
// Instantiate a class which is not defined
var x = new lz.missingclass();
</handler>
</class>

<myclass />

</canvas>

检查通过脚本实例化的类是否缺少 。您可以随时查看 Adoboe Flash Run-Time Errors的列表同样,有时这里包含有用的信息。

编辑:添加问题的解决方案
这条评论指出了问题:

I found that this line is causing the problem. <attribute name="dp"
value="$once{new lz.Datapointer()}" />
. Any idea why?



如果您查看 5.0 的 OpenLaszlo 引用,您将看到类名(在类浏览器的左侧)使用不同的大小写;一些类使用驼峰式大小写(lz.Browser、lz.DataElement),其他类使用全部小写(lz.view、lz.datapointer)。在您的情况下,您应该使用 lz.datapointer 而不是 lz.Datapointer。

因此,此代码将毫无问题地编译和运行:
<canvas>

<class name="my_class" extends="node">
<attribute name="dp" value="$once{new lz.datapointer()}" />
</class>

<my_class oninit="Debug.inspect(this.dp)" />

</canvas>

测试类的正确名称的一个好方法是在 DHTML 运行时的控制台中使用 JavaScript,您可以在其中为 lz 自动完成。???类名:

Auto-completion for LZX class names in the browser JavaScript console

在 OpenLaszlo 中调试 SWF#1007 错误
如果您在 SWF 运行时遇到 #1007 错误,我将在禁用调试器并打开 JavaScript 错误控制台的情况下为 DHTML 编译应用程序。尝试这个:
  • 将带有 $once{} 约束的行更改为
    <attribute name="dp" value="$once{new lz.Datapointer()}" />
  • 使用 DHTML 运行时和 debug=false 在 Chrome 中编译应用程序。您应该在 JavaScript 控制台中看到以下错误:

  • Error for undefined class in JavaScript console
  • 单击右侧的error-1007.lzx:3,您将看到生成的JavaScript 代码,其中包含导致错误
  • 的行

    JavaScript error in code generated by the OpenLaszlo compiler

    此行失败:
    this.setAttribute("dp",new (lz.Datapointer)())

    您甚至可以通过在控制台中输入 new (lz.Datapointer) 来重现错误。

    关于migration - 将代码从 OpenLaszlo 3.3 迁移到 5.0 : TypeError #1007 Instantiation attempted on a non-constructor.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12105735/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com