许久不曾写随笔,即使许久的怠惰,是该抬抬头,看看天了。

  公司项目,项目要求是在winForm端先获取下位机的肌电信号采集数据,然后根据这些数据的变化来控制flash游戏,这样一些患者在flash游戏中达到肢体训练的效果。

  在这里 需要用到c#flash的通信, 先上通信示例

ActionScript3.0 ActionScript2.0 略有差异,但和C#的通信方式是不变的。 

function xmlToArray(list:XML):Array {
    //xml转数组
    list.ignoreWhite = true;
    var ar:Array = new Array();
    var list_node:XMLNode = list.firstChild.childNodes[0];
    var l:Number = list_node.childNodes.length;
    for (var i:Number = 0; i<l; i++) {
        var node:XMLNode = list_node.childNodes[i];
        var ob = new Array();
        ob.push(node.childNodes[0].childNodes[0].nodeValue);
        ob.push(node.childNodes[1].childNodes[0].nodeValue);
        ar.push(ob);
    }
    return ar;
}

ExternalInterface.addCallback("onPlatformMessage",null,onPlatformMessage);
var xmlContent:XML;
var messageName:String, messageType:String, gameId:String;
function onPlatformMessage(args:String) {
    xmlContent = new XML(args);
    list_arr = xmlToArray(xmlContent);
    //fscommand('Message', '<Message name="GAME_SCORE_REPLY" type="2" gameId="4025"><PlayerScore>'+list_arr+'</PlayerScore></Message>');
    messageName = xmlContent.firstChild.attributes.name;
    messageType = xmlContent.firstChild.attributes.type;
    gameId = xmlContent.firstChild.attributes.gameId;
    if (messageType == '1' && gameId == '4025') {
        switch (messageName) {
            case 'GAME_VERSION' :
                fscommand('Message', '<Message name="GAME_VERSION_REPLY" type="2" gameId="4025"><GameVersion>1.0</GameVersion></Message>');
                break;
            case 'PLAYER_ENTER' :
                if (gameFinished) {
                    playerMode = xmlContent.childNodes[0].childNodes[0].childNodes[0].nodeValue;
                    if (playerMode != 3) {
                        //playerMode=xmlContent.PlayerMode;
                        playerName = xmlContent.childNodes[0].childNodes[1].childNodes[0].childNodes[0].nodeValue;
                        level = xmlContent.childNodes[0].childNodes[2].childNodes[0].nodeValue;
                        score = xmlContent.childNodes[0].childNodes[1].childNodes[1].childNodes[0].nodeValue;
                        if(level>25)(level=1);
                        gotoAndStop(3);
                        fscommand('Message', '<Message name="GAME_ENTER_OK" type="2" gameId="4025"></Message>');
                    }
                }
                break;
            case 'GAME_PAUSE' :
                if (!gameFinished) {
                    pauseGame(true);
                    
                }
                break;
            case 'GAME_RESUME' :
                if (!gameFinished) {
                    continueGame();
                    
                }
                break;
            case 'GAME_LEAVE' :
                gameFinished = true;
                fscommand('Message', '<Message name="GAME_LEAVE_OK" type="2" gameId="4025"><PlayerScore>'+score+'</PlayerScore><GameStage>'+level+'</GameStage></Message>');
                break;
            case 'GAME_HELP' :
                break;
            case 'GAME_SOUND' :
                break;
            case 'GET_GAME_SCORE' :
                fscommand('Message', '<Message name="GAME_SCORE_REPLY" type="2" gameId="4025"><PlayerScore>'+score+'</PlayerScore></Message>');
                break;
            case 'GET_GAME_STAGE' :
                fscommand('Message', '<Message name="GAME_STAGE_REPLY" type="2" gameId="4025"><GameStage>'+level+'</GameStage></Message>');
                break;
            case 'SET_GAME_STAGE' :
                if (!gameFinished) {
                    level = xmlContent.childNodes[0].childNodes[0].childNodes[0].nodeValue;
                    gotoAndPlay(4);
                    fscommand('Message', '<Message name="SET_GAME_STAGE_OK" type="2" gameId="4025"></Message>');
                }
                break;
            case 'GET_GAME_STATUS' :
                //tmpInt = xmlContent.firstChild.attributes.GameStage;
                fscommand('Message', '<Message name="GAME_STATUS_REPLY" type="2" gameId="4025"><GameStatus>'+gameStatus+'</GameStatus></Message>');
                break;
            case 'SET_LANGUAGE' :
                var language = xmlContent.firstChild.attributes.GameLanguage;
                break;
            default :
                searchHighscore();
        }
    }
    //end if  
}
//end onPlatformMessage
Flash端的ActionScript2.0代码

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-16
  • 2021-11-05
猜你喜欢
  • 2022-12-23
  • 2021-06-07
  • 2022-01-17
  • 2021-08-05
  • 2022-12-23
  • 2021-10-18
相关资源
相似解决方案