使用 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#中播放swf文件后如何显示另一个表单

使用 C# 图形从 swf 绘制图像

如何在 C# 中拉伸 swf 视频以适应播放器?

C#的Process类调用第三方插件实现PDF文件转SWF文件

通过 PHP 检索 GET 变量,在同一脚本上发送到 SWF?

AS3字体SWF示例