几年前,我创建了一个小巧简单的 SWF,只是为了在各种浏览器上播放 MP3 文件。我公开了接口并从 JavaScript 调用它们。这一切都小而简单。你可以看到整个Guise.as
源代码。
我使用 编译了主类mtasc
,它允许您为初始化代码指定一个主函数:
/**Main entry point.*/
static function main(mc)
{
这工作得很好,直到我想添加 WAV 支持。Flash 本身不支持 WAV,所以我尝试在库中添加. 但是该库需要 Flash 10 并且无法编译mtasc
,所以我下载了 Flex 4.6 并尝试使用mxmlc
。男孩,我的痛苦才刚刚开始。
我编译的 SWF 不再有效——即使是 MP3 文件。我不知道从哪里开始寻找问题,但我知道我有很多未解决的问题——也许其中一个是我的问题:
- 如果我理解正确,
mxmlc
没有“主入口点”的概念,但 Flash 将简单地创建“主类”的实例,不管是什么。但是我如何指定主类?如果我在命令行上引用我的类mxmlc
,该类会自动成为主类,还是绝对需要我的类在根包中(即没有)?它必须有一个特殊的名字吗? - 在我成功指定一个主类之后,我可以简单地将我的入口点代码移动到我的主类的构造函数中吗?
- 在我原来的类中,我添加了一个全局函数来使用
Array.from=function(object:Object)
. 当我处于严格模式时,这给了我一个错误——显然是因为它不喜欢我向Array
类对象添加静态方法。这仍然可以在非严格模式下工作吗?有什么问题?如果我将它转换为我课堂上的普通方法,它会起作用吗? - 正如我习惯在“真正的” JavaScript 中做的那样,我添加了一个
Function.prototype.bind=function()
函数,以便在我有回调时this
正确设置。这仍然有效吗?我可以在原型中添加方法Function
吗? - 我还需要绑定上下文吗?如果我调用类似
positionTimeoutID=setTimeout(fireSoundPosition.bind(this), 1000)
, without的东西bind(this)
,Flash 会将正确的值传递this
给我的回调方法吗? - Flex 编译器抱怨几个 API 方法发生了变化,所以也许修改我的调用改变了一些东西,我不理解新的 API。有没有办法调试这个 SWF?写入浏览器控制台?哔?任何事物?无需从 Adobe 购买一些大型 IDE 之类的?
对于任何反馈,我们都表示感谢。我敢肯定,只有一两个小调整会影响整个事情,但也许在社区的帮助下,我不必花几天时间阅读整本书和购买新的 SDK 来重新编译我的 SWF几个新电话...谢谢。