'flash'에 해당되는 글 2건

  1. 2015.01.27 [nodeJS] Flash + Html5 + Node.js
  2. 2015.01.27 [Node.js] net 모듈 + flash 소켓통신


1. view (pc)- flash actionscirpt3 starling framwork

2. control (mobile) - html5 device orientation event

3. server (node.js) - socket.io

 

flash를 view로 사용하였고, flash의 object를 모바일기기로 컨트롤하며, 그 둘을 Node.js의 소켓으로 연결하는 테스를 해 보았습니다. 모바일 기기의 좌, 우 기울어짐에 따라 flash의 object가 움직이고 있으며, 모바일 쪽에는 시작하기 버튼을 두어 게임에 관련된 전반적인 사항들을 모두 모바일로 제어 할 수 있도록 설계하였습니다.

 

테스트 모바일 디바이스로는 아이패드, 아이폰, 갤럭시s2를 사용하였으며, pc와 통신에 있어서 만족할 만한 반응속도를 얻을 수 있었습니다. 영상에서 사용된 디바이스는 갤럭시s2 입니다.

Posted by august5pm
,

1. app.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// --------------------------------------
// Imports
// --------------------------------------
var net = require('net');
var mySocket;
  
// --------------------------------------
// Construct The Socket
// --------------------------------------
// create the server and register event listeners
var server = net.createServer(function(socket) {
    mySocket = socket;
    mySocket.on("connect", onConnect);
    mySocket.on("data", onData);
});
  
// --------------------------------------
// Events
// --------------------------------------
/**
 * Handles the Event: <code>"connect"</code>.
 *
*/
function onConnect()
{
    console.log("Connected to Flash");
}
  
/**
 * Handles the Event: <code>"data"</code>.
 *
 * When flash sends us data, this method will handle it
 *
*/
function onData(d)
{
    if(d == "exit\0")
    {
        console.log("exit");
        mySocket.end();
        server.close();
    }
    else
    {
        console.log("From Flash = " + d);
        mySocket.write(d, 'utf8');
    }
}
  
// --------------------------------------
// Start the Socket
// --------------------------------------
server.listen(3000, "127.0.0.1");


2. flash (as3)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
package
{
  
    // --------------------------------------
    // Imports
    // --------------------------------------
    import flash.display.Sprite;
    import flash.events.DataEvent;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.events.KeyboardEvent;
    import flash.events.MouseEvent;
    import flash.net.XMLSocket;
    import flash.text.TextField;
    import flash.ui.Keyboard;
  
    // --------------------------------------
    // Class
    // --------------------------------------
    /**
    * <p>The <code>NodeJSDemo</code> class is ...</p>
    *
    */
    public class NodeJSDemo extends Sprite
    {
  
        // --------------------------------------
        // Properties
        // --------------------------------------
        // PUBLIC GETTER/SETTERS
        /**
         * The core object which connects client to
         *  server for real-time communication
         */
        private var _xmlSocket:XMLSocket;
  
        /**
         * The sole UI element to show some test output
         */
        private var _textField:TextField;
  
        // PUBLIC CONST
  
        // PRIVATE
  
        // --------------------------------------
        // Constructor
        // --------------------------------------
        /**
         * This is the constructor.
         *
         */
        public function NodeJSDemo()
        {
            // SUPER
            super();
  
            // EVENTS
            addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
  
            // VARIABLES
  
            // PROPERTIES
            _textField = new TextField ();
            _textField.width = 300;
            _textField.height = 300;
            _textField.multiline = true;
            _textField.htmlText = "";
            addChild(_textField);
  
            // METHODS
  
        }
  
        // --------------------------------------
        // Methods
        // --------------------------------------
        // PUBLIC
        /**
         * Handles the Event: <code>Event.CHANGE</code>.
         *
         * @param aEvent <code>Event</code> The incoming aEvent payload.
         *
         * @return void
         *
         */
        private function _onAddedToStage(aEvent : Event):void
        {
            //  CREATE THE SOCKET AND CONNECT - I'M NOT SURE WHAT PARAMETERS ARE VALID HERE
            //  BUT IT MUST MATCH THE SETTINGS WITHIN THE 'HelloWorldNodeJS.js' FILE YOU ARE USING
            _xmlSocket = new XMLSocket("127.0.0.1", 3000);
  
            // EVENTS
            stage.removeEventListener(MouseEvent.CLICK,         _onAddedToStage);
            //
            _xmlSocket.addEventListener(Event.CONNECT,          _onConnected);
            _xmlSocket.addEventListener(IOErrorEvent.IO_ERROR,  _onIOError);
  
        }
  
        // PRIVATE
  
        // --------------------------------------
        // Event Handlers
        // --------------------------------------
        /**
         * Handles the Event: <code>Event.CHANGE</code>.
         *
         * @param aEvent <code>Event</code> The incoming aEvent payload.
         *
         * @return void
         *
         */
        private function _onConnected(aEvent : Event):void
        {
            //  TRACE
            trace("onConnect() aEvent: " + aEvent);
  
            //  EVENTS
            _xmlSocket.removeEventListener(Event.CONNECT,           _onConnected);
            _xmlSocket.removeEventListener(IOErrorEvent.IO_ERROR,   _onIOError);
            //
            _xmlSocket.addEventListener(DataEvent.DATA,             _onDataReceived);
            _xmlSocket.addEventListener(Event.CLOSE,                _onSocketClose);
            //
            stage.addEventListener(KeyboardEvent.KEY_UP,            _onKeyUp);
  
        }
  
        /**
         * Handles the Event: <code>Event.CHANGE</code>.
         *
         * @param aEvent <code>Event</code> The incoming aEvent payload.
         *
         * @return void
         *
         */
        private function _onSocketClose(aEvent : Event):void
        {
            //  TRACE
            trace("_onSocketClose aEvent : " + aEvent);
  
            //  EVENTS
            stage.removeEventListener(KeyboardEvent.KEY_UP, _onKeyUp);
            _xmlSocket.removeEventListener(Event.CLOSE, _onSocketClose);
            _xmlSocket.removeEventListener(DataEvent.DATA, _onDataReceived);
        }
  
        /**
         * Handles the Event: <code>KeyboardEvent.KEY_UP</code>.
         *
         * @param aEvent <code>KeyboardEvent</code> The incoming aEvent payload.
         *
         * @return void
         *
         */
        private function _onKeyUp(evt:KeyboardEvent):void
        {
            //  HANDLE KEYS
            if (evt.keyCode == Keyboard.ESCAPE) {
                //1. SEND 'KILL THE SERVER' TO THE SERVER
                _xmlSocket.send("exit");
            }
            else {
                //2. SEND ANY NON-ESCAPE KEY'S CODE ('38' FOR EXAMPLE) TO SERVER
                //      THIS IS A SILLY EXAMPLE OF SENDING A NUMBER TO THE SERVER
                //      JUST SO THE SERVER CAN SEND IT BACK. SIMPLE.
                _xmlSocket.send(evt.keyCode);
            }
        }
  
        /**
         * Handles the Event: <code>DataEvent.DATA</code>.
         *
         * @param aEvent <code>DataEvent</code> The incoming aEvent payload.
         *
         * @return void
         *
         */
        private function _onDataReceived(aEvent : DataEvent):void
        {
            try {
  
                //  Show the server data in text
                _textField.htmlText += ("From Server: " + aEvent.data + "n");
  
                //scroll down to show latest line
                _textField.scrollV = _textField.maxScrollV;
  
            } catch (error : Error) {
                //  TRACE
                trace("_onDataReceived error:  " + error);
            }
        }
  
        /**
         * Handles the Event: <code>IOErrorEvent.IO_ERROR</code>.
         *
         * @param aEvent <code>IOErrorEvent</code> The incoming aEvent payload.
         *
         * @return void
         *
         */
        private function _onIOError(aEvent : IOErrorEvent):void
        {
            //  TRACE
            trace("_onIOError aEvent: " + aEvent);
  
            //  EVENTS
            _xmlSocket.removeEventListener(Event.CONNECT, _onConnected);
            _xmlSocket.removeEventListener(IOErrorEvent.IO_ERROR, _onIOError);
            stage.addEventListener(MouseEvent.CLICK, _onAddedToStage);
        }
  
    }
}


'프로그래밍 > nodeJS' 카테고리의 다른 글

[nodeJS] Flash + Html5 + Node.js  (0) 2015.01.27
[nodeJS] Socket.IO 방만들기  (0) 2015.01.27
[nodeJS] Socket.IO 모듈  (0) 2015.01.27
[nodeJS] Express / Routes / Jade 모듈  (0) 2015.01.27
[nodeJS] connect / connect_router 모듈  (0) 2015.01.27
Posted by august5pm
,