我们可以在Flex库中使用静态初始化器吗?

时间:2011-08-10 04:12:03

标签: actionscript-3 flex flex3

我们在项目中使用 as3Crypto 库。我们已经下载了代码,修改了一下并开始使用它。最初,我们已将完整的代码作为项目的一部分。现在我们尝试将其编译为Separate Library文件(.swc)。当我们编译代码时,我们没有收到任何错误,但我们收到一条警告说

Severity and Description    Path    Resource    Location    Creation Time   Id
flex2.compiler.as3.SignatureExtension.SignatureGenerationFailed[level='warning', column='23', node='ForStatement', line='214', cause='flex2.compiler.as3.SignatureAssertionRuntimeException: Unreachable Codepath
    at flex2.compiler.as3.SignatureEvaluator.ASSERT(SignatureEvaluator.java:369)
    at flex2.compiler.as3.SignatureEvaluator.UNREACHABLE_CODEPATH(SignatureEvaluator.java:357)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:1560)
    at macromedia.asc.parser.ForStatementNode.evaluate(ForStatementNode.java:50)
    at flash.swf.tools.as3.EvaluatorAdapter.evaluate(EvaluatorAdapter.java:338)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:1795)
    at macromedia.asc.parser.StatementListNode.evaluate(StatementListNode.java:60)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:530)
    at macromedia.asc.parser.ClassDefinitionNode.evaluate(ClassDefinitionNode.java:106)
    at flash.swf.tools.as3.EvaluatorAdapter.evaluate(EvaluatorAdapter.java:338)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:1795)
    at macromedia.asc.parser.StatementListNode.evaluate(StatementListNode.java:60)
    at flex2.compiler.as3.SignatureEvaluator.evaluate(SignatureEvaluator.java:454)
    at macromedia.asc.parser.ProgramNode.evaluate(ProgramNode.java:80)
    at flex2.compiler.as3.SignatureExtension.generateSignature(SignatureExtension.java:270)
    at flex2.compiler.as3.SignatureExtension.doSignatureGeneration(SignatureExtension.java:174)
    at flex2.compiler.as3.SignatureExtension.parse1(SignatureExtension.java:137)
    at flex2.compiler.as3.Compiler.parse1(Compiler.java:369)

', path='C:\MyData\Flex WorkSpaces\Separate\HurlantCryptoLib\src\com\hurlant\crypto\symmetric\AESKey.as']   HurlantCryptoLib/src/com/hurlant/crypto/symmetric   AESKey.as   line 214    1312947481229   27

当我们检查代码时,我们将其跟踪到代码文件AESKey.as,尤其是来自静态初始化程序代码块。我不能简单地忽略警告,因为它是我的应用程序安全性的关键部分。

如果有人遇到此问题,请帮我解决此问题。

1 个答案:

答案 0 :(得分:0)

要回答标题中的问题,看起来是的,您可以在Flex库项目中使用静态初始值设定项。这是库项目中的一个类:

package test
{
public class StaticInitializerTest
{
    public static var VALUE:String = "fail";

    {
        VALUE = "pass";
    }
}
}

这是一个使用它的Flex应用程序:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
                        creationComplete="onCreationComplete()">
    <mx:Script>
        <![CDATA[
            import test.StaticInitializerTest;

            private function onCreationComplete ():void
            {
                trace("Static initializers in a Flex library project: " + StaticInitializerTest.VALUE);
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>

这会产生以下输出:

Static initializers in a Flex library project: pass