AS3 Flash SWF文件版本控制

时间:2014-06-30 18:47:17

标签: actionscript-3 flex flash versioning

我已经在网上看了一遍,似乎找不到将版本号放在swf文件中的方法。我们需要知道我们在不同机器上使用哪个版本的swf文件,所以我们想过如果swf目录中不存在包含swf版本号的文件,可能会写一个文件。我们没有使用Flex和as3,因此我们无法写入磁盘,因此无法正常工作。所以我一直在环顾四周,并且找不到我们可以在哪里指定swf的文件版本,如#34; 14.06.30"。

我们是否可以设置swf文件的版本?

我们已经考虑过使用按键来显示版本号,但是我们不想这样做,因为swf可以加载到其他swf中,其中按键可能意味着其他内容。这将是最后的手段。

2 个答案:

答案 0 :(得分:6)

对于swf中的版本编号,我们使用编译常量http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7abd.html。例如:-define + == CONFIG :: VersionString,'{svn version}'使用Flash构建器,您可以将其添加到其他编译器设置中,或者在Continuous构建脚本中设置此变量。在您的动作脚本中,您可以使用'CONFIG :: VersionString'读取此变量。

我们将此版本号添加到swf(右键菜单)的上下文菜单中。

package {
import flash.display.Sprite;

public class Test extends Sprite
{
    public function Test()
    {
        super();
        addVersionToContextMenu();

    }

    private function addVersionToContextMenu () : void
    {
        var item:ContextMenuItem = new ContextMenuItem("Version: " + CONFIG::VersionString);
        var items:Array = this.contextMenu.customItems;
        items.push(item);
        this.contextMenu.customItems = items;
    }
}

}

如果您右键单击swf,它看起来像:

enter image description here

答案 1 :(得分:1)

您可以使用SharedObject来存储和检索版本号:

var sharedObject:SharedObject = SharedObject.getLocal("versionNumber");
var versionNumber:String;
if(sharedObject.data.value)
{
    versionNumber = sharedObject.data.value;
}
else 
{
    // no version number has been set, set it here
    versionNumber = "14.06.30";
    sharedObject.data.value = versionNumber
    sharedObject.flush();
}

如果您有SharedObject读者(我建议.minerva)您甚至无需打开swf即可检索设定值。只需打开.sol文件。

对于SWF,.sol文件存储在C:\Users\[USER-NAME]\AppData\Roaming\Macromedia\Flash Player\#SharedObjects\[random sequence of characters]