Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 10.1编译器忽略了以前有效的静态方法引用_Flash_Actionscript 3_Flash Cs5 - Fatal编程技术网

Flash 10.1编译器忽略了以前有效的静态方法引用

Flash 10.1编译器忽略了以前有效的静态方法引用,flash,actionscript-3,flash-cs5,Flash,Actionscript 3,Flash Cs5,我有一个我在ActionScript 3中编写的程序,我一直在通过Flash CS4 FP10编译,没有错误。现在我正在尝试为FlashCS5FP10.1编译?我在一个看似平凡的问题上犯了疯狂的错误。我想知道是否有人能提供见解 我通过静态类型类的引用得到了一个可能未定义方法parseBoolean的1061编译器错误调用,因为它显然无法读取我编写的实用程序类上的公共静态方法。基本参考结构如下: 实用程序类别: package com.lassie.utils { public final

我有一个我在ActionScript 3中编写的程序,我一直在通过Flash CS4 FP10编译,没有错误。现在我正在尝试为FlashCS5FP10.1编译?我在一个看似平凡的问题上犯了疯狂的错误。我想知道是否有人能提供见解

我通过静态类型类的引用得到了一个可能未定义方法parseBoolean的1061编译器错误调用,因为它显然无法读取我编写的实用程序类上的公共静态方法。基本参考结构如下:

实用程序类别:

package com.lassie.utils
{
    public final class XMLUtil
    {
        public static function parseBoolean($value:String, $defaultValue:Boolean=false):Boolean {
            if ($value == null || $value == "") return $defaultValue;
            return ($value == "1" || $value == "true");
        }
    }
}
引用脚本:

import com.lassie.utils.XMLUtil;

function parseXML($xml:XML, $tween:PuppetTween):PuppetTween
{
    $tween.followGrid = XMLUtil.parseBoolean( $xml.@followGrid, true );
    $tween.animateMoves = XMLUtil.parseBoolean( $xml.@animateMoves, true );
    $tween.confineToWalkarea = XMLUtil.parseBoolean( $xml.@confineToWalkarea, false );
    return $tween;
}
无论出于何种原因,我遇到了一个错误1061:通过对静态parseBoolean辅助方法的每次引用的static type类的引用,调用一个可能未定义的方法parseBoolean。这就像编译器完全无视XMLUtil类上存在该方法这一事实,尽管它被声明为公共和静态。同样,这在Flash9和Flash10编译器中都有效。只是CS5突然抛出了这个问题


有什么想法吗?还有其他人有类似的迁移问题吗?谢谢。

我也遇到过这种情况,在我的例子中,这与成员是静态的无关,但不知怎的,编译器被搞糊涂了,因为我在另一个包中使用了一个已经存在的类名!!! 该代码在CS4中编译得非常完美,但在CS5中出现了中断

解决方案是使用完全限定名称:

import com.lassie.utils.XMLUtil;

function parseXML($xml:XML, $tween:PuppetTween):PuppetTween
{
    $tween.followGrid = com.lassie.utils.XMLUtil.parseBoolean( $xml.@followGrid, true );
    $tween.animateMoves = com.lassie.utils.XMLUtil.parseBoolean( $xml.@animateMoves, true );
    $tween.confineToWalkarea = com.lassie.utils.XMLUtil.parseBoolean( $xml.@confineToWalkarea, false );
    return $tween;
}
我从未发现这一切发生的原因,也没有花时间去寻找它
希望这对你有所帮助,当你做这类事情时,你需要记住一个单身汉还有一个例子。 这里有一个很好的解释。 而且更深入。 基本上,您所做的是在一个未设置为单例使用的类上调用一个静态函数。
如果你只是想要一个助手类,那就让你的生活变得简单,让它成为一个普通的公共类。

原因是你没有正确地创建singleton。真的,这与singleton无关。你一定是在开玩笑。。。是的。成功了。我认为你关于不同包中共享相同名称的类的理论也可能是准确的。我只是浏览了一下我的代码库:虽然我只创建了一个名为XMLUtil的类,但我现在看到Adobe的corelib中也有一个类,我在我的应用程序中使用了这个类。显然,编译器不再像以前那样命名类名称。很高兴知道。谢谢你的帮助!回答得好!只是为了跟进。。。即使在不同的包中共享相同名称的类肯定是这里的问题。我只是重构了我的应用程序,并将XMLUtil类名更改为XMLUtil,这样它就不再与Adobe Corelib中的名称冲突。问题解决了。我可以再次使用引用类顶部的单个import语句引用该类的成员。我不确定您为什么认为它是一个单例?这是一个简单的旧静态方法,他正确地调用了它。是的,这个场景不需要使用单例模式。XMLUtil类只是定义了一个静态助手方法的集合,这与Math类提供常用数学函数集合的方式非常相似。