AS3 Color.interpolateColor 仅在应用程序版本中给出错误?
Posted
技术标签:
【中文标题】AS3 Color.interpolateColor 仅在应用程序版本中给出错误?【英文标题】:AS3 Color.interpolateColor giving error only in app version? 【发布时间】:2019-11-13 14:48:58 【问题描述】:我有一个旧的 Flash 游戏,我在其中使用 interpolateColor 来广泛混合颜色,并且效果很好。
但它现在给出了一个错误。代码如下:
var firstColour = firstFusionGenes.girl.body.head.shapes.transform.colorTransform.color;
var secondColour = secondFusionGenes.girl.body.head.shapes.transform.colorTransform.color;
var newColour = this.transform.colorTransform; //so it's not empty
newColour.color = Color.interpolateColor(firstColour, secondColour, 0.5);
我跟踪了 firstColour 和 secondColour 的结果,它们按预期返回为颜色整数。但我得到了错误:
ReferenceError: Error #1065: Variable Color is not defined.
我已确保添加有关将 Color 导入 Flash 的所有行,尽管它过去在没有它的情况下也能正常工作。我在将其重新格式化为应用程序格式时所做的一些事情破坏了它。但我不明白这个错误;好像它现在不明白“颜色”是什么?错误是什么意思?
附录:
我创建了一个新文件来测试代码,但它给出了不同的错误:
1120: Access of undefined property Color.
但是当我将它包含在文件中时,这个错误就消失了:
import fl.motion.Color;
所以我认为这不是颜色不在程序中的问题。错误与此略有不同。
【问题讨论】:
Color 类不是一个内在的 Flash Player 类,它是一个与 Flash CS3 IDE一起打包的类>(官方文档是这样说的:help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fl/…)。这意味着,其他 Flash IDE 版本可能没有这个类。要解决这个问题,您需要使用 CS3 来构建您的应用程序,或者创建自己的类,或者获取现有的类(您可以使用我的并添加 interpolate 方法:@ 987654322@). 谢谢!奇怪的是,我可以使用 Adobe Animate CC 将旧游戏版本导出到 swf 和 AIR for Desktop 应用程序,而且效果很好。这不意味着它仍然包括在内吗? 是的,我刚刚检查了三次:我拿了旧游戏,在新的 Animate 中重新导出。导出到 Flash Player 16、Flash Player 26、AIR for Desktop 32.0.0.116、AIR for ios;没问题。所以颜色一定还在那里,不是吗? 【参考方案1】:我一直在修改有效的新文件,并试图找出它与我损坏的文件之间的设置差异。最后我在附加文件中找到了这个文件夹。当我从新文件中删除它时,它给出了同样的错误。所以我回去确保将此文件夹添加到损坏的文件中(它丢失了),这解决了问题!我假设这与允许 Animate 像 Organis 所说的那样引入颜色代码有关。
【讨论】:
以上是关于AS3 Color.interpolateColor 仅在应用程序版本中给出错误?的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3 AS3:使用SWFObject2和AS3传递变量