我希望使用 Flash 播放器中的“创建投影仪”选项自动执行从 .swf 文件创建 .exe 的任务。我正在尝试使用 ant 构建文件来实现它。有人可以指出我正确的方向。尝试搜索但未找到可用于 Flash 播放器的命令行参数以及如何将 .swf 转换为 .exe。
注意:需要在 Flash Player 上作为运行时使用,没有 3rd 方播放器/解决方案。
我希望使用 Flash 播放器中的“创建投影仪”选项自动执行从 .swf 文件创建 .exe 的任务。我正在尝试使用 ant 构建文件来实现它。有人可以指出我正确的方向。尝试搜索但未找到可用于 Flash 播放器的命令行参数以及如何将 .swf 转换为 .exe。
注意:需要在 Flash Player 上作为运行时使用,没有 3rd 方播放器/解决方案。
我不知道有什么方法可以做到这一点,但如果有帮助,我想指出 FlashDevelop 能够连接到 Adobe Flash Pro 来进行发布,但你必须在 Flash Pro 中打开 FLA。
注意:被问者确实喜欢这个答案:
SWF's as SWF's for EXE's.? I would say that is native to Adobe Flash, plus there has always been ANT 'Build Commands' -- as well as -- ITASCA in use for these processes (now deprecated). The main positive outcome for your situation is that I already had code that I used for something similar, so I added it to github - Take a look, it is very straightforward with comments and instructions: Note, the Application Manifest files along with custom **bat** files allow the /exe files to be generated from your action-script within **Main.as and application.xmL https://github.com/leonardo-m-mendevil/esexes.git **
function setPPS(F1, ActionVersion)
{
if (fl.fileExists(F1)
{
var _x, _f, _t, _d;
fl.openDocument(F1);
var file_n = F1.split("/").pop();
var path_f = F1.split(file_n)[0].join("/");
file_n = file_n.split(".")[0];
var pt = path_f + "/_Profile_._x";
fl.getDocumentDOM().exportPublishProfile(pt);
_x = FLfile.read(pt);
_f = _x.indexOf("<defaultNames>");
_t = _x.indexOf("</defaultNames>");
_d = _x.substring(_f, _t);
_x = _x.split(_d).join("<defaultNames>0");
_f = _x.indexOf("<flashDefaultName>");
_t = _x.indexOf("</flashDefaultName>");
_d = _x.substring(_f, _t);
_x = _x.split(_d).join("<flashDefaultName>0");
_f = _x.indexOf("<flashfile_n>");
_t = _x.indexOf("</flashfile_n>");
_d = _x.substring(_f, _t);
var p3i = "../";
if (file_n.indexOf("/") > -1){
var splitPath = file_n.split("/");
splitPath.length--;
var i = splitPath.length;
while (i--) { p3i += "../"; }
}
_x = _x.split(_d).join("<flashfile_n>" + p3i + "deploy/" + file_n + ".swf");
var types = {};
types.projectorWinfile_n = "exe";
for (var n in types) {
_f = _x.indexOf("<" + n + ">");
_t = _x.indexOf("</" + n + ">");
_d = _x.substring(_f, _t);
_x = _x.split(_d).join("<" + n + ">" + file_n + "." + types[n]);
}
_f = _x.indexOf("<ActionScriptVersion>");
_t = _x.indexOf("</ActionScriptVersion>");
_d = _x.substring(_f, _t);
_x = _x.split(_d).join("<ActionScriptVersion>" + ActionVersion);
_f = _x.indexOf("<PackageExportFrame>");
_t = _x.indexOf("</PackageExportFrame>");
_d = _x.substring(_f, _t);
_x = _x.split(_d).join("<PackageExportFrame>1");
if (ActionVersion == 2) {
_f = _x.indexOf("<PackagePaths>");
_t = _x.indexOf("</PackagePaths>");
} else {
_f = _x.indexOf("<AS3PackagePaths>");
_t = _x.indexOf("</AS3PackagePaths>");
}
_d = _x.substring(_f, _t);
var cpt = "./";
if (file_n.indexOf("/") > -1){
cpt = "";
var t4 = file_n.split("/");
t4.length--;
var i = t4.length;
while (i--){
cpt += "../";
}
}
switch(ActionVersion){
case 2:
_x = _x.split(_d).join("<PackagePaths>" + cpt + "classes");
break;
case 3:
_x = _x.split(_d).join("<AS3PackagePaths>" + cpt + "classes");
}
function writeAllDOM(xstrg,pt){
FLfile.write(pt, xstrg);
fl.getDocumentDOM().importPublishProfile(pt);
fl.saveDocument(fl.getDocumentDOM(), cpt);
fl.getDocumentDOM().publish();
}
FLfile.remove(fPath);
}
}