【问题标题】:Calling local class调用本地类
【发布时间】:2019-11-19 05:00:10
【问题描述】:

我正在尝试从名为“JSON”的类中调用静态方法,但是我正在执行的导入已经具有此方法。如何调用本地类?

我试过了:

mypackage.subpackage.JSON.encode(param1)

在 C# 中上面可以工作,但我不知道为什么在下面的 ActionScript 中不起作用。

import flash.utils.ByteArray;

public class Package extends ByteArray
{
    public function writeJsonObject(param1:Object) : void
    {
        this.writeUTF(JSON.encode(param1));
    }
}

我收到此错误:

错误:1061:通过静态类型 Class 的引用调用可能未定义的方法解码

【问题讨论】:

  • (1) 请注意,PackageJSON 是 AS3 语言中的保留关键字。尝试将名称更改为 myPackage.asmyJSON.as 并查看错误是否消失... (2) 您的错误表明方法 .decode 是这里的问题,但您显示的代码正在执行 @ 987654326@。错误是由后来的其他原因引起的吗? (3) 还有this. 应该是什么?是类Package 本身还是函数的其他外部调用者(在另一个类或主类中)?我的意思是需要吗? (4) 你如何使用上面的代码(例如:任何涉及的静态变量)?也许有更好的方法...
  • 我的意思是告诉我们你想用你的类实现什么,展示一些演示问题的代码,我们可以尝试提出更好的方法。
  • JSON 在 AS3 中没有编码功能

标签: actionscript-3 actionscript flash-builder


【解决方案1】:

尝试使用JSON.stringify()

import flash.utils.ByteArray;

public class MyClass extends ByteArray
{
    public function writeJsonObject(param1:Object) : void
    {
        this.writeUTF(JSON.stringify(param1));
    }
}

参考:https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.html

还值得注意的是 writeUTFwriteUTFBytes 之间的区别,以准确了解写入您的 ByteArray 的内容

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多