如何在 AS3 中使用 mx.rpc.Responder

How to working with mx.rpc.Responder in AS3

我正在尝试使用名为 assql 的库来为 mysql 的操作服务。在使用中,我看到她使用一种名为 AsyncResponder 的方法,该方法仅适用于 Flex 应用程序的 mx.rpc 包...我的问题是,我如何才能在常规 AS3 中使用此方法,或使用其他方法功能来解决我的问题?

package  {

    import com.maclema.mysql.Statement;
    import com.maclema.mysql.Connection;
    import com.maclema.mysql.ResultSet;
    import mx.rpc.AsyncResponder;
    import com.maclema.mysql.MySqlToken;
    import com.maclema.util.ResultsUtil;
    import flash.display.MovieClip;
    import flash.events.Event;


    public class CRUD extends MovieClip{

        //The MySql Connection
        private var con:Connection;

        public function CRUD() {
            onCreationComplete();
        }

        private function onCreationComplete():void {
            con = new Connection("localhost", 3306, "root", "", "banricoop-game");
            con.addEventListener(Event.CONNECT, handleConnected);
            con.connect();
        }

        private function handleConnected(event:Event):void {
            getAllUsers();
        }

        private function getAllUsers():void {
            var st:Statement = con.createStatement();

            var token:MySqlToken = st.executeQuery("SELECT * FROM users");
            token.info = "GetAllUsers";
            token.addResponder(new AsyncResponder(result, fault, token));
        }

        private function getEmployee(userID:int):void {
            var st:Statement = con.createStatement();
            st.sql = "SELECT * FROM users WHERE id = ?";
            st.setNumber(1, userID);

            var token:MySqlToken = st.executeQuery();
            token.info = "GetUser";
            token.userID = userID;
            token.addResponder(new AsyncResponder(result, fault, token));
        }

        private function result(data:Object, token:Object):void {
            var rs:ResultSet;

            if ( token.info == "GetAllUsers" ) {
                rs = ResultSet(data);
                    trace("Found " + rs.size() + " employees!");       
            } else if ( token.info == "GetUser" ) {
                rs = ResultSet(data);
                if ( rs.next() ) {
                    trace("Employee " + token.employeeID + " username is '" + rs.getString("username") + "'");
                }
                else {
                    trace("No such employee for id " + token.employeeID);
                }
            }
        }

        private function fault(info:Object, token:Object):void {
                trace(token.info + " Error: " + info);
        }
    }
}

拥抱!

您需要下载 Flex SDK 并将这些库添加到您的项目中:

  • /frameworks/libs/framework.swc
  • /frameworks/libs/rpc.swc

因此,您将能够在仅限 AS3 的环境中使用。