使用 C# 在 SWF 中编辑 Sprite 变量
Posted
技术标签:
【中文标题】使用 C# 在 SWF 中编辑 Sprite 变量【英文标题】:Editing a Sprite variable in a SWF With C# 【发布时间】:2015-08-14 10:45:16 【问题描述】:所以我正在尝试为我知道的游戏开发一个培训师,但我仍然想知道如何通过按钮和文本在游戏的动作脚本中编辑精灵变量
// Action script...
// [Initial MovieClip Action of sprite 2248]
#initclip 12
class gameData
var PLAYERID, PLAYERNAME, LASTMODIFIED, DIFFICULTY, CLEVEL, MONEY, AMMO_TOTAL, POINTS;
function gameData(_PLAYERNAME)
var _loc2 = new Date();
PLAYERID = String(_loc2.getTime());
PLAYERID = PLAYERID + String(Math.round(Math.random() * 99999));
PLAYERNAME = _PLAYERNAME;
LASTMODIFIED = new Date();
DIFFICULTY = 1;
CLEVEL = 1;
MONEY = 0;
AMMO_TOTAL = [60000, 0, 0, 0, 0, 0];
POINTS = 0;
// End of the function
static function saveGame(_GAME)
_global.CGAME.LASTMODIFIED = new Date();
gameData.saveGames(_global.GAMES);
// End of the function
static function saveGames(_GAMES)
var _loc1 = SharedObject.getLocal(gameData.GAMEID);
_loc1.data.GAMES = _GAMES;
_loc1.flush();
// End of the function
static function newGame(_NAME, _DIFFICULTY)
var _loc1 = SharedObject.getLocal(gameData.GAMEID);
var _loc2 = _loc1.data.GAMES;
if (_loc2 == undefined)
_loc1.data.GAMES = new Array();
// end if
var _loc3 = new gameData(_name, _DIFFICULTY, _loc2.length);
_loc1.data.GAMES.push(_loc3);
_loc1.flush();
// End of the function
static function deleteGame(_INDEX)
var _loc1 = SharedObject.getLocal(gameData.GAMEID);
var _loc2 = _loc1.data.GAMES;
if (_INDEX < 0)
return;
// end if
if (_INDEX > _loc2.length - 1)
return;
// end if
_loc2.splice(_INDEX, 1);
_loc1.flush();
// End of the function
static function getGames()
var _loc1 = SharedObject.getLocal(gameData.GAMEID);
var _loc2 = _loc1.data.GAMES;
if (_loc2 == undefined)
_loc1.data.GAMES = [];
_loc1.flush();
// end if
return (_loc1.data.GAMES);
// End of the function
static var GAMEID = "qigames_13DaysNightmare_12";
// End of Class
#endinitclip
这是我要专门编辑的动作脚本精灵
var _loc2 = new Date();
PLAYERID = String(_loc2.getTime());
PLAYERID = PLAYERID + String(Math.round(Math.random() * 99999));
PLAYERNAME = _PLAYERNAME;
LASTMODIFIED = new Date();
DIFFICULTY = 1;
CLEVEL = 1;
MONEY = 0;
AMMO_TOTAL = [60000, 0, 0, 0, 0, 0];
POINTS = 0;
我反编译了 swf,可以用一个按钮和一个文本框编辑主根目录或 MainMovie,但我似乎无法改变 sprite 中的值
![this is how i edit root variables
Game.SetVariable("_root.EXamplevar", textbox1.Text);
][2]
如果我解释的内容令人困惑,请帮助抱歉
【问题讨论】:
【参考方案1】:我不确定我是否理解你的意思。但是这段代码在运行时通过 SWF 修改变量。但与 C# 无关。希望这是你想要的,或者这可以帮助你。
您可以使用括号语法在运行时修改自定义变量或调用自定义方法:
this["MONEY"]=9999;
这是括号语法的示例。
现在你可以这样做了:
function setValue(e:MouseEvent)
this[varTxt.text]=Number(valTxt.text);
myButton.addEventListener("click",setValue);
“varTxt”是您写入变量名称的文本字段,“valTxt”是变量的输入值。
使用此代码,您的游戏中有一个自定义训练器。或者更好地说,就像控制台一样。
希望这会有所帮助。
【讨论】:
以上是关于使用 C# 在 SWF 中编辑 Sprite 变量的主要内容,如果未能解决你的问题,请参考以下文章
C#的Process类调用第三方插件实现PDF文件转SWF文件