LocalConnectionTest
♥0 |
Line 149 |
Modified 2012-05-24 16:45:20 |
MIT License
archived:2017-03-09 14:40:54
ActionScript3 source code
/**
* Copyright umhr ( http://wonderfl.net/user/umhr )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/5ZlV
*/
package
{
import com.bit101.components.Label;
import com.bit101.components.NumericStepper;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.SharedObject;
/**
* ...
* @author umhr
*/
[SWF(width = 465, height = 465, backgroundColor = 0xEEEEEE, frameRate = 60)]
public class WonderflMain extends Sprite
{
private var _numericStepper:NumericStepper;
public function WonderflMain():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var sharedObject:SharedObject = SharedObject.getLocal("my_data");
if (sharedObject) {
var obj:Object = sharedObject.data;
if (isNaN(obj.count)) {
obj["count"] = 0;
}else {
obj["count"] ++;
}
}
sharedObject.flush();
addChild(new LocalConnectionSenderExample("myConnection" + (obj.count) % 2));
addChild(new LocalConnectionReceiverExample("myConnection" + (obj.count + 1) % 2));
setFPSStepper();
}
private function setFPSStepper():void
{
new Label(this, 320, 440, "FPS:");
_numericStepper = new NumericStepper(this, 350, 440, onNumericStepper);
_numericStepper.minimum = 1;
_numericStepper.maximum = 120;
_numericStepper.value = 60;
}
private function onNumericStepper(event:Event):void
{
stage.frameRate = _numericStepper.value;
}
}
}
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.StatusEvent;
import flash.net.LocalConnection;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFieldType;
class LocalConnectionSenderExample extends Sprite {
private var conn:LocalConnection;
// UI elements
private var messageLabel:TextField;
private var message:TextField;
private var sendBtn:Sprite;
private var _connectionName:String = "myConnection";
public function LocalConnectionSenderExample(connectionName:String) {
_connectionName = connectionName;
buildUI();
sendBtn.addEventListener(MouseEvent.CLICK, sendMessage);
conn = new LocalConnection();
conn.addEventListener(StatusEvent.STATUS, onStatus);
}
private function sendMessage(event:MouseEvent):void {
conn.send(_connectionName, "lcHandler", message.text, new Date().time);
message.text = "";
}
private function onStatus(event:StatusEvent):void {
switch (event.level) {
case "status":
//trace("LocalConnection.send() succeeded");
break;
case "error":
trace("LocalConnection.send() failed");
message.text = "ブラウザでこのページと同じページを開いてください。";
break;
}
}
private function buildUI():void {
const hPadding:uint = 5;
// messageLabel
messageLabel = new TextField();
messageLabel.x = 8;
messageLabel.y = 8;
messageLabel.text = "Text to send:";
messageLabel.autoSize = TextFieldAutoSize.LEFT;
addChild(messageLabel);
// message
message = new TextField();
message.x = messageLabel.x + messageLabel.width + hPadding;
message.y = 8;
message.width = 300;
message.height = 20;
message.background = true;
message.border = true;
message.type = TextFieldType.INPUT;
addChild(message);
// sendBtn
sendBtn = new Sprite();
sendBtn.x = message.x + message.width + hPadding;
sendBtn.y = 8;
var sendLbl:TextField = new TextField();
sendLbl.x = 1 + hPadding;
sendLbl.y = 1;
sendLbl.selectable = false;
sendLbl.autoSize = TextFieldAutoSize.LEFT;
sendLbl.text = "Send";
sendBtn.addChild(sendLbl);
sendBtn.graphics.lineStyle(1);
sendBtn.graphics.beginFill(0xcccccc);
sendBtn.graphics.drawRoundRect(0, 0, (sendLbl.width + 2 + hPadding + hPadding), (sendLbl.height + 2), 5, 5);
sendBtn.graphics.endFill();
addChild(sendBtn);
}
}
import flash.display.Sprite;
import flash.net.LocalConnection;
import flash.text.TextField;
class LocalConnectionReceiverExample extends Sprite {
private var conn:LocalConnection;
private var output:TextField;
private var _connectionName:String = "myConnection";
public function LocalConnectionReceiverExample(connectionName:String) {
_connectionName = connectionName;
buildUI();
conn = new LocalConnection();
conn.client = this;
try {
conn.connect(_connectionName);
} catch (error:ArgumentError) {
trace("Can't connect...the connection name is already being used by another SWF");
}
}
public function lcHandler(msg:String, time:Number):void {
output.appendText(msg +" " + String(new Date().time-Number(time)) + " msec" +"\n");
}
private function buildUI():void {
output = new TextField();
output.background = true;
output.border = true;
output.wordWrap = true;
output.x = 8;
output.y = 32;
output.width = 420;
output.height = 400;
output.text = "";
addChild(output);
}
}