2014-06-30 137 views
0

我已经在网上查找了所有内容,似乎无法找到将版本号放入swf文件的方法。我们需要知道我们在不同机器上具有哪个版本的swf文件,所以我们曾想过如果文件不存在于swf目录中(包含swf版本号),可能会写入一个文件。我们没有使用Flex和as3,所以这是行不通的,因为我们无法写入磁盘。所以我一直在四处寻找,一直没能找到我们可能指定我们的swf文件版本的地方,如“14.06.30”。AS3 Flash SWF文件版本

有没有一种方法可以设置我们的swf文件的版本?

我们想过使用按键显示版本号,但我们不想这样做,因为swf可以加载其他swf的按键可能意味着别的东西。这将是最后的手段。

+1

不能你只需要添加文件本身的元数据? – BadFeelingAboutThis

+0

另外,除非您停止传播事件,否则可以有多个一起运行的键盘事件侦听器。 – BadFeelingAboutThis

+0

@LDMedia为您提供服务,这实际上是我一直在寻找的。我们通过使用上下文菜单覆盖了上下文菜单,它可以很好地工作,甚至可以更好,因为它们不需要找到swf文件或者在运行时关闭它。 – iedoc

回答

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

+0

我实际上已经通过为版本号添加一个全局常量并将一个项目添加到右键单击上下文菜单的顶部来解决问题。我们没有对编译选项做任何事情,但我将其标记为答案,因为它与我们解决问题的方法非常相似。谢谢 – iedoc

+0

@iedoc ...但是,这种解决方案不会像以前的按键解决方案那样使您处于同一点吗?引用:“但我们不想这样做,因为swf可以加载其他swf的按键可能意味着其他东西。那么当它用自己的上下文菜单加载到父SWF中时会发生什么呢?哪一个会出现?只是说... –

+1

@ iedoc一个全局常量可以做同样的事情,但对我们来说,在构建过程中自动设置一个编译器常量更容易。 –

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文件。

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

+2

这是一个很好的解决方案,但最终用户可以禁用您的应用存储sharedObjects的能力,因此可能不可靠。 – BadFeelingAboutThis