我已经在网上看了一遍,似乎找不到将版本号放在swf文件中的方法。我们需要知道我们在不同机器上使用哪个版本的swf文件,所以我们想过如果swf目录中不存在包含swf版本号的文件,可能会写一个文件。我们没有使用Flex和as3,因此我们无法写入磁盘,因此无法正常工作。所以我一直在环顾四周,并且找不到我们可以在哪里指定swf的文件版本,如#34; 14.06.30"。
我们是否可以设置swf文件的版本?
我们已经考虑过使用按键来显示版本号,但是我们不想这样做,因为swf可以加载到其他swf中,其中按键可能意味着其他内容。这将是最后的手段。
答案 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,它看起来像:
答案 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]