// forked from checkmate's colin challenge for professionals package { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.events.TextEvent; import flash.system.Capabilities; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.ui.Keyboard; import flash.ui.Mouse; import net.user1.reactor.Attribute; import net.user1.reactor.IClient; import net.user1.reactor.Reactor; import net.user1.reactor.ReactorEvent; import net.user1.reactor.Room; import net.user1.reactor.RoomEvent; [SWF(width = "465", height = "465", backgroundColor = "0x111111", frameRate = "30")] /** * http://asmple.com/unionplatform/002/ * をフルスクラッチで出来るとこだけ移植しましたよー。 * ユーザIDで自動ログインに変えました。 * @author naoto koshikawa */ public class ColinPro extends Sprite { //-------------------------------------------------------------- // properties //-------------------------------------------------------------- //---------------------- // static properties //---------------------- /** * server host */ private static const HOST:String = "tryunion.com"; /** * server port */ private static const PORT:Number = 9100; /** * room name */ private static const ROOM_NAME:String = "naoto5959room"; public static const STAGE_WIDTH:Number = 465; public static const STAGE_HEIGHT:Number = 465; public static const FIELD_WIDTH:Number = STAGE_WIDTH - 32; public static const FIELD_HEIGHT:Number = STAGE_HEIGHT - 46; //---------------------- // private properties //---------------------- /** * client data */ private var _clientData:ClientData; /** * client data list */ private var _clientDataList:Object = { }; /** * reactor */ private var _reactor:Reactor; /** * room */ private var _room:Room; /** * indicate if during input or not */ private var _isDuringInput:Boolean; //---------------------- // DisplayObject //---------------------- private var _txtName:TextField; private var _btnJoin:Sprite; private var _txtComment:TextField; private var _btnComment:Sprite; private var _btnColor:Sprite; private var _colorPalette:ColorPalette; private var _field:Sprite; //-------------------------------------------------------------- // method //-------------------------------------------------------------- /** * constructor */ public function ColinPro() { _clientData = new ClientData(); _clientData.color = 0x777777 + 0x888888 * Math.random(); _clientData.x = Math.floor(Math.random() * FIELD_WIDTH) + 1; _clientData.y = Math.floor(Math.random() * FIELD_HEIGHT) + 1; _reactor = new Reactor(null, Capabilities.playerType == "External"); _reactor.addEventListener(ReactorEvent.READY, _reactor_readyHandler); // _reactor.addEventListener(ReactorEvent.CLOSE, _reactor_closeHandler); _reactor.connect(HOST, PORT); } /** * join to Union Server */ private function join():void { _clientData_changeHandler(); var client:IClient = _reactor.getClientManager().self(); _clientDataList[client.getClientID()] = _clientData; _room = _reactor.getRoomManager().createRoom(ROOM_NAME); _room.addEventListener(RoomEvent.JOIN, _room_joinHandler); _room.addEventListener(RoomEvent.SYNCHRONIZE, _room_synchronizeHandler); _room.addEventListener(RoomEvent.ADD_CLIENT, _room_addClientHandler); _room.addEventListener(RoomEvent.REMOVE_CLIENT, _room_removeClientHandler); _room.addEventListener(RoomEvent.UPDATE_CLIENT_ATTRIBUTE, _room_updateClientAttributeHandler); _room.join(); } /** * add client to current room * @param client */ private function addClient(client:IClient):void { var clientData:ClientData; if (_clientDataList.hasOwnProperty(client.getClientID())) { clientData = _clientDataList[client.getClientID()]; } else { clientData = new ClientData(client); _clientDataList[client.getClientID()] = clientData; } if (_field.getChildByName(client.getClientID())) return; var avatar:Avatar = new Avatar(clientData); avatar.name = client.getClientID(); _field.addChild(avatar); } /** * remove client from current room * @param client */ private function removeClient(client:IClient):void { delete _clientDataList[client.getClientID()]; _field.removeChild(_field.getChildByName(client.getClientID())); } /** * update client data * @param event */ private function updateClient(client:IClient, changeAttr:Attribute):void { var clientData:ClientData = ClientData(_clientDataList[client.getClientID()]); if (!clientData) { addClient(client); clientData = ClientData(_clientDataList[client.getClientID()]); } if (changeAttr.name == "clientname" || changeAttr.name == "comment") { clientData[changeAttr.name] = decodeURI(changeAttr.value); } else { clientData[changeAttr.name] = changeAttr.value; } } //---------------------- // event handler //---------------------- /** * handler of ReactorEvent.READY * @param event */ private function _reactor_readyHandler(event:ReactorEvent):void { buildUI(); _txtName.text = _reactor.getClientManager().self().getClientID(); // _btnJoin.addEventListener(MouseEvent.CLICK, _btnJoin_clickHandler); _btnJoin_clickHandler(null); } /** * handler of MouseEvent.CLICK * @param event */ private function _btnJoin_clickHandler(event:MouseEvent):void { if (_txtName.text.length < 1) return; _clientData.clientname = _txtName.text; _btnJoin.removeEventListener(MouseEvent.CLICK, _btnJoin_clickHandler); join(); } /** * handler of RoomEvent.JOIN * @private */ private function _room_joinHandler(event:RoomEvent):void { _btnJoin.removeEventListener(MouseEvent.CLICK, _btnJoin_clickHandler); removeChild(_btnJoin); removeChild(_txtName); addChild(_btnColor); addChild(_colorPalette); addChild(_txtComment); addChild(_btnComment); addChild(_field); _clientData.addEventListener(Event.CHANGE, _clientData_changeHandler); _field.addEventListener(MouseEvent.CLICK, _field_clickHandler); _btnColor.addEventListener(MouseEvent.CLICK, _btnColor_clickHandler); _btnComment.addEventListener(MouseEvent.CLICK, _btnComment_clickHandler); _txtComment.addEventListener(KeyboardEvent.KEY_UP, _txtComment_keyboardUpHandler); _txtComment.addEventListener(TextEvent.TEXT_INPUT, _txtComment_textInputHandler); } /** * handler of RoomEvent.SYNCHRONIZE * @private */ private function _room_synchronizeHandler(event:RoomEvent):void { for each(var client:IClient in _room.getClients()) { addClient(client); } } /** * handler of RoomEvent.ADD_CLIENT * @private */ private function _room_addClientHandler(event:RoomEvent):void { addClient(event.getClient()); } /** * handler of RoomEvent.REMOVE_CLIENT * @private */ private function _room_removeClientHandler(event:RoomEvent):void { removeClient(event.getClient()); } /** * handler of RoomEvent.UPDATE_CLIENT_ATTRIBUTE * @private */ private function _room_updateClientAttributeHandler(event:RoomEvent):void { var changedAttr:Attribute = event.getChangedAttr(); switch (changedAttr.name) { case "x": case "y": case "color": case "clientname": case "comment": { updateClient(event.getClient(), changedAttr); } } } /** * handler of Event.CHANGE * @param event */ private function _clientData_changeHandler(event:Event = null):void { var client:IClient = _reactor.getClientManager().self(); client.setAttribute("x", String(_clientData.x)); client.setAttribute("y", String(_clientData.y)); client.setAttribute("color", String(_clientData.color)); client.setAttribute("clientname", String(encodeURI(_clientData.clientname))); client.setAttribute("comment", String(encodeURI(_clientData.comment))); } /** * handler of MouseEvent.CLICK * @param event */ private function _field_clickHandler(event:MouseEvent):void { _clientData.x = _field.mouseX; _clientData.y = _field.mouseY; } /** * handler of MouseEvent.CLICK * @param event */ private function _btnColor_clickHandler(event:MouseEvent):void { addChild(_colorPalette); _colorPalette.x = mouseX; _colorPalette.y = mouseY - _colorPalette.height; _colorPalette.visible = true; _btnColor.removeEventListener(MouseEvent.CLICK, _btnColor_clickHandler); _colorPalette.addEventListener(MouseEvent.CLICK, _colorPalette_clickHandler); } /** * handler of MouseEvent.CLICK * @param event */ private function _btnComment_clickHandler(event:MouseEvent = null):void { if (!_txtComment.text) return; _clientData.comment = _txtComment.text; _txtComment.text = ""; } /** * handler of KeyboardEvent.KEY_UP * @param event */ private function _txtComment_keyboardUpHandler(event:KeyboardEvent):void { if (event.keyCode == Keyboard.ENTER && !_isDuringInput) _btnComment_clickHandler(); _isDuringInput = false; } /** * handler of TextEvent.TEXT_INPUT * @param event */ private function _txtComment_textInputHandler(event:TextEvent):void { _isDuringInput= true; } /** * hadler of MouseEvent.CLICK * dispatched from _colorPalette * @param event */ private function _colorPalette_clickHandler(event:MouseEvent):void { _colorPalette.removeEventListener(MouseEvent.CLICK, _colorPalette_clickHandler); var color32:uint = _colorPalette.bitmapData.getPixel32(_colorPalette.mouseX, _colorPalette.mouseY); var color24:uint = color32 & 0x00FFFFFF; var alpha:uint = (color32 >> 24) & 0xFF; if (!alpha) return; _btnColor.graphics.clear(); _btnColor.graphics.beginFill(color24); _btnColor.graphics.drawRect(0, 0, 16, 16); _colorPalette.visible = false; // change data's color _clientData.color = color24; _btnColor.addEventListener(MouseEvent.CLICK, _btnColor_clickHandler); } //---------------------- // build UI method //---------------------- /** * build UI */ private function buildUI():void { // login name _txtName = new TextField(); _txtName.defaultTextFormat = new TextFormat("_等幅", 12, 0xFFFFFF); _txtName.type = TextFieldType.INPUT; _txtName.maxChars = 10; _txtName.width = 100; _txtName.height = 14; _txtName.border = true; _txtName.borderColor = 0xFFFFFF; _txtName.x = (STAGE_WIDTH - _txtName.width) / 2; _txtName.y = (STAGE_HEIGHT - _txtName.height) / 2; addChild(_txtName); // login button _btnJoin = new Sprite(); _btnJoin.graphics.beginFill(0x66CC00); _btnJoin.graphics.drawRect(0, 0, 40, 16); _btnJoin.mouseChildren = false; var labelJoin:TextField = new TextField(); labelJoin.defaultTextFormat = new TextFormat("_等幅", 12, 0xFFFFFF); labelJoin.width = labelJoin.height = 0; labelJoin.autoSize = TextFieldAutoSize.LEFT; labelJoin.text = "join"; labelJoin.x = 4; _btnJoin.addChild(labelJoin); _btnJoin.x = _txtName.x + _txtName.width + 10; _btnJoin.y = _txtName.y; addChild(_btnJoin); // color button _btnColor = new Sprite(); _btnColor.graphics.beginFill(_clientData.color); _btnColor.graphics.drawRect(0, 0, 16, 16); _btnColor.x = 2; _btnColor.y = STAGE_WIDTH - _btnColor.height - 2; // addChild(_btnColor); // color palette _colorPalette = new ColorPalette(ColorGenerator.WEB_SAFE_COLOR); _colorPalette.visible = false; // addChild(_colorPalette); // comment input _txtComment = new TextField(); _txtComment.defaultTextFormat = new TextFormat("_等幅", 12, 0xFFFFFF); _txtComment.type = TextFieldType.INPUT; _txtComment.maxChars = 40; _txtComment.width = 400; _txtComment.height = 14; _txtComment.border = true; _txtComment.borderColor = 0xFFFFFF; _txtComment.x = _btnColor.x + _btnColor.width + 2; _txtComment.y = _btnColor.y; // addChild(_txtComment); // comment button _btnComment = new Sprite(); _btnComment.graphics.beginFill(0x66CC00); _btnComment.graphics.drawRect(0, 0, 40, 16); _btnComment.mouseChildren = false; var labelComment:TextField = new TextField(); labelComment.defaultTextFormat = new TextFormat("_等幅", 12, 0xFFFFFF); labelComment.width = labelComment.height = 0; labelComment.autoSize = TextFieldAutoSize.LEFT; labelComment.text = "send"; labelComment.x = 4; _btnComment.addChild(labelComment); _btnComment.x = _txtComment.x + _txtComment.width + 2; _btnComment.y = _txtComment.y; // addChild(_btnComment); // field _field = new Sprite(); _field.graphics.beginFill(0xFF000000, 0.0); _field.graphics.drawRect(0, 0, STAGE_WIDTH - 32, STAGE_HEIGHT - _txtComment.height - 32); _field.x = _field.y = 16; // addChild(_field); } } } import caurina.transitions.Tweener; import flash.display.PixelSnapping; import flash.events.Event; import flash.events.EventDispatcher; import flash.geom.ColorTransform; import net.user1.reactor.IClient; class ClientData extends EventDispatcher { private var _x:Number = -100; public function get x():Number { return _x; } public function set x(value:Number):void { _x = value; } private var _y:Number = -100; public function get y():Number { return _y; } public function set y(value:Number):void { _y = value; dispatchEvent(new Event(Event.CHANGE)); } private var _color:uint; public function get color():uint { return _color; } public function set color(value:uint):void { _color = value; dispatchEvent(new Event(Event.CHANGE)); } private var _clientname:String = ""; public function get clientname():String { return _clientname; } public function set clientname(value:String):void { _clientname = value; dispatchEvent(new Event(Event.CHANGE)); } private var _comment:String = ""; public function get comment():String { return _comment; } public function set comment(value:String):void { _comment = value; dispatchEvent(new Event(Event.CHANGE)); } //-------------------------------------------------------------- // method //-------------------------------------------------------------- /** * constructor */ public function ClientData(client:IClient = null):void { if (client) { if (client.getAttribute("x") != null) x = Number(client.getAttribute("x")); if (client.getAttribute("y") != null) y = Number(client.getAttribute("y")); if (client.getAttribute("color") != null) color = Number(client.getAttribute("color")); if (client.getAttribute("clientname") != null) clientname = String(decodeURI(client.getAttribute("clientname"))); if (client.getAttribute("comment") != null) comment = String(decodeURI(client.getAttribute("comment"))); } } } /** * Avatar */ import flash.display.Sprite; import flash.text.TextField; class Avatar extends Sprite { //-------------------------------------------------------------- // properties //-------------------------------------------------------------- /** * client data */ private var _clientData:ClientData; //---------------------- // DisplayObject //---------------------- /** * avatar body */ private var _avatarBody:AvatarBody; /** * client name */ private var _clientName:TextField; /** * comment balloon */ private var _balloon:Balloon; //-------------------------------------------------------------- // method //-------------------------------------------------------------- /** * constructor */ public function Avatar(clientData:ClientData) { _clientData = clientData; _clientData.addEventListener(Event.CHANGE, _clientData_changeHandler); addChild(_avatarBody = new AvatarBody()); _avatarBody.x -= 16; _avatarBody.y -= 16; var faceBitmapData:BitmapData = new BitmapData(6, 3, true, 0x00000000); faceBitmapData.setPixel32(0, 0, 0xFFFFFFFF); faceBitmapData.setPixel32(0, 1, 0xFFFFFFFF); faceBitmapData.setPixel32(0, 2, 0xFFFFFFFF); faceBitmapData.setPixel32(5, 0, 0xFFFFFFFF); faceBitmapData.setPixel32(5, 1, 0xFFFFFFFF); faceBitmapData.setPixel32(5, 2, 0xFFFFFFFF); var faceBitmap:Bitmap = new Bitmap(faceBitmapData); faceBitmap.x = -3; faceBitmap.y = -12; addChild(faceBitmap); addChild(_clientName = new TextField()); _clientName.defaultTextFormat = new TextFormat("_等幅", 12, 0xFFFFFF); _clientName.selectable = false; _clientName.width = _clientName.height = 0; _clientName.autoSize = flash.text.TextFieldAutoSize.LEFT; addChild(_balloon = new Balloon(_clientData)); x = _clientData.x; y = _clientData.y; _clientData_changeHandler(); } /** * arrange balloon position */ private function arrangeBalloon():void { var direction:uint = 1; _balloon.x = - _balloon.width - _avatarBody.width / 2; _balloon.y = - _avatarBody.width; if (_clientData.x < ColinPro.FIELD_WIDTH / 2) { direction = 3; _balloon.x = _avatarBody.width / 2; } _balloon.setMessage(_clientData.comment, direction); } //---------------------- // event handler //---------------------- /** * handler of Event.CHANGE * @param event */ private function _clientData_changeHandler(event:Event = null):void { // x, y if (x > 0 && y > 0) { var distance:int = Math.sqrt(Math.pow(_clientData.x - x, 2) + Math.pow(_clientData.y - y, 2)); Tweener.addTween(this, { x: _clientData.x, y: _clientData.y, time: distance * 0.005, transition: "easeOutCubic", onComplete: function():void { arrangeBalloon(); } }); } else { x = _clientData.x; y = _clientData.y; } // color var colorTransform:ColorTransform = new ColorTransform(); colorTransform.color = _clientData.color; _avatarBody.transform.colorTransform = colorTransform; // name if (_clientData.clientname) _clientName.text = _clientData.clientname; _clientName.x = - _clientName.width / 2; _clientName.y = _avatarBody.height / 2; // comment if (_clientData.comment != null) { arrangeBalloon(); } } } /** * Avatar Body * @author naoto koshikawa */ import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; class AvatarBody extends Sprite { //-------------------------------------------------------------- // properties //-------------------------------------------------------------- //---------------------- // static properties //---------------------- public static const WIDTH:Number = 32; public static const HEIGHT:Number = 32; public static const STATUS1_START_FRAME:uint = 1; public static const STATUS1_END_FRAME:uint = 10; public static const STATUS2_START_FRAME:uint = 11; public static const STATUS2_END_FRAME:uint = 25; //---------------------- // private properties //---------------------- /** * avatar bitmap */ private var _bitmap1:Bitmap; private var _bitmapData1:BitmapData; private var _bitmap2:Bitmap; private var _bitmapData2:BitmapData; /** * frame count */ private var _frame:uint = 0; //-------------------------------------------------------------- // method //-------------------------------------------------------------- public function AvatarBody() { drawState1(); drawState2(); _bitmap1 = new Bitmap(_bitmapData1, PixelSnapping.NEVER); _bitmap1.visible = true; _bitmap2 = new Bitmap(_bitmapData2, PixelSnapping.NEVER); _bitmap2.visible = true; addChild(_bitmap1); addChild(_bitmap2); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } //---------------------- // event handler //---------------------- /** * handler of this * dispatched from this * @param event */ private function enterFrameHandler(event:Event):void { _frame++; if (STATUS1_START_FRAME <= _frame && _frame <= STATUS1_END_FRAME) { _bitmap1.visible = true; _bitmap2.visible = false; } else if (STATUS2_START_FRAME <= _frame && _frame <= STATUS2_END_FRAME) { _bitmap1.visible = false; _bitmap2.visible = true; } else { _frame = 0; } } //---------------------- // private method //---------------------- /** * draw avatar status 1 */ private function drawState1():void { _bitmapData1 = new BitmapData(WIDTH, HEIGHT, true, 0x00000000); _bitmapData1.setPixel32(9, 15, 4278190080); _bitmapData1.setPixel32(9, 16, 4278190080); _bitmapData1.setPixel32(9, 17, 4278190080); _bitmapData1.setPixel32(9, 18, 4278190080); _bitmapData1.setPixel32(9, 19, 4278190080); _bitmapData1.setPixel32(10, 1, 4278190080); _bitmapData1.setPixel32(10, 2, 4278190080); _bitmapData1.setPixel32(10, 3, 4278190080); _bitmapData1.setPixel32(10, 4, 4278190080); _bitmapData1.setPixel32(10, 5, 4278190080); _bitmapData1.setPixel32(10, 6, 4278190080); _bitmapData1.setPixel32(10, 7, 4278190080); _bitmapData1.setPixel32(10, 8, 4278190080); _bitmapData1.setPixel32(10, 9, 4278190080); _bitmapData1.setPixel32(10, 10, 4278190080); _bitmapData1.setPixel32(11, 1, 4278190080); _bitmapData1.setPixel32(11, 2, 4278190080); _bitmapData1.setPixel32(11, 3, 4278190080); _bitmapData1.setPixel32(11, 4, 4278190080); _bitmapData1.setPixel32(11, 5, 4278190080); _bitmapData1.setPixel32(11, 6, 4278190080); _bitmapData1.setPixel32(11, 7, 4278190080); _bitmapData1.setPixel32(11, 8, 4278190080); _bitmapData1.setPixel32(11, 9, 4278190080); _bitmapData1.setPixel32(11, 10, 4278190080); _bitmapData1.setPixel32(11, 12, 4278190080); _bitmapData1.setPixel32(11, 13, 4278190080); _bitmapData1.setPixel32(11, 14, 4278190080); _bitmapData1.setPixel32(11, 15, 4278190080); _bitmapData1.setPixel32(11, 16, 4278190080); _bitmapData1.setPixel32(11, 17, 4278190080); _bitmapData1.setPixel32(11, 18, 4278190080); _bitmapData1.setPixel32(11, 19, 4278190080); _bitmapData1.setPixel32(11, 20, 4278190080); _bitmapData1.setPixel32(11, 21, 4278190080); _bitmapData1.setPixel32(11, 22, 4278190080); _bitmapData1.setPixel32(11, 23, 4278190080); _bitmapData1.setPixel32(12, 1, 4278190080); _bitmapData1.setPixel32(12, 2, 4278190080); _bitmapData1.setPixel32(12, 3, 4278190080); _bitmapData1.setPixel32(12, 4, 4278190080); _bitmapData1.setPixel32(12, 5, 4278190080); _bitmapData1.setPixel32(12, 6, 4278190080); _bitmapData1.setPixel32(12, 7, 4278190080); _bitmapData1.setPixel32(12, 8, 4278190080); _bitmapData1.setPixel32(12, 9, 4278190080); _bitmapData1.setPixel32(12, 10, 4278190080); _bitmapData1.setPixel32(12, 12, 4278190080); _bitmapData1.setPixel32(12, 13, 4278190080); _bitmapData1.setPixel32(12, 14, 4278190080); _bitmapData1.setPixel32(12, 15, 4278190080); _bitmapData1.setPixel32(12, 16, 4278190080); _bitmapData1.setPixel32(12, 17, 4278190080); _bitmapData1.setPixel32(12, 18, 4278190080); _bitmapData1.setPixel32(12, 19, 4278190080); _bitmapData1.setPixel32(12, 20, 4278190080); _bitmapData1.setPixel32(12, 21, 4278190080); _bitmapData1.setPixel32(12, 22, 4278190080); _bitmapData1.setPixel32(12, 23, 4278190080); _bitmapData1.setPixel32(13, 1, 4278190080); _bitmapData1.setPixel32(13, 2, 4278190080); _bitmapData1.setPixel32(13, 3, 4278190080); _bitmapData1.setPixel32(13, 4, 4294967295); _bitmapData1.setPixel32(13, 5, 4294967295); _bitmapData1.setPixel32(13, 6, 4294967295); _bitmapData1.setPixel32(13, 7, 4278190080); _bitmapData1.setPixel32(13, 8, 4278190080); _bitmapData1.setPixel32(13, 9, 4278190080); _bitmapData1.setPixel32(13, 10, 4278190080); _bitmapData1.setPixel32(13, 12, 4278190080); _bitmapData1.setPixel32(13, 13, 4278190080); _bitmapData1.setPixel32(13, 14, 4278190080); _bitmapData1.setPixel32(13, 15, 4278190080); _bitmapData1.setPixel32(13, 16, 4278190080); _bitmapData1.setPixel32(13, 17, 4278190080); _bitmapData1.setPixel32(13, 18, 4278190080); _bitmapData1.setPixel32(13, 19, 4278190080); _bitmapData1.setPixel32(13, 20, 4278190080); _bitmapData1.setPixel32(13, 21, 4278190080); _bitmapData1.setPixel32(13, 22, 4278190080); _bitmapData1.setPixel32(13, 23, 4278190080); _bitmapData1.setPixel32(13, 25, 4278190080); _bitmapData1.setPixel32(13, 26, 4278190080); _bitmapData1.setPixel32(13, 27, 4278190080); _bitmapData1.setPixel32(13, 28, 4278190080); _bitmapData1.setPixel32(13, 29, 4278190080); _bitmapData1.setPixel32(13, 30, 4278190080); _bitmapData1.setPixel32(14, 1, 4278190080); _bitmapData1.setPixel32(14, 2, 4278190080); _bitmapData1.setPixel32(14, 3, 4278190080); _bitmapData1.setPixel32(14, 4, 4278190080); _bitmapData1.setPixel32(14, 5, 4278190080); _bitmapData1.setPixel32(14, 6, 4278190080); _bitmapData1.setPixel32(14, 7, 4278190080); _bitmapData1.setPixel32(14, 8, 4278190080); _bitmapData1.setPixel32(14, 9, 4278190080); _bitmapData1.setPixel32(14, 10, 4278190080); _bitmapData1.setPixel32(14, 12, 4278190080); _bitmapData1.setPixel32(14, 13, 4278190080); _bitmapData1.setPixel32(14, 14, 4278190080); _bitmapData1.setPixel32(14, 15, 4278190080); _bitmapData1.setPixel32(14, 16, 4278190080); _bitmapData1.setPixel32(14, 17, 4278190080); _bitmapData1.setPixel32(14, 18, 4278190080); _bitmapData1.setPixel32(14, 19, 4278190080); _bitmapData1.setPixel32(14, 20, 4278190080); _bitmapData1.setPixel32(14, 21, 4278190080); _bitmapData1.setPixel32(14, 22, 4278190080); _bitmapData1.setPixel32(14, 23, 4278190080); _bitmapData1.setPixel32(15, 1, 4278190080); _bitmapData1.setPixel32(15, 2, 4278190080); _bitmapData1.setPixel32(15, 3, 4278190080); _bitmapData1.setPixel32(15, 4, 4278190080); _bitmapData1.setPixel32(15, 5, 4278190080); _bitmapData1.setPixel32(15, 6, 4278190080); _bitmapData1.setPixel32(15, 7, 4278190080); _bitmapData1.setPixel32(15, 8, 4278190080); _bitmapData1.setPixel32(15, 9, 4278190080); _bitmapData1.setPixel32(15, 10, 4278190080); _bitmapData1.setPixel32(15, 12, 4278190080); _bitmapData1.setPixel32(15, 13, 4278190080); _bitmapData1.setPixel32(15, 14, 4278190080); _bitmapData1.setPixel32(15, 15, 4278190080); _bitmapData1.setPixel32(15, 16, 4278190080); _bitmapData1.setPixel32(15, 17, 4278190080); _bitmapData1.setPixel32(15, 18, 4278190080); _bitmapData1.setPixel32(15, 19, 4278190080); _bitmapData1.setPixel32(15, 20, 4278190080); _bitmapData1.setPixel32(15, 21, 4278190080); _bitmapData1.setPixel32(15, 22, 4278190080); _bitmapData1.setPixel32(15, 23, 4278190080); _bitmapData1.setPixel32(16, 1, 4278190080); _bitmapData1.setPixel32(16, 2, 4278190080); _bitmapData1.setPixel32(16, 3, 4278190080); _bitmapData1.setPixel32(16, 4, 4278190080); _bitmapData1.setPixel32(16, 5, 4278190080); _bitmapData1.setPixel32(16, 6, 4278190080); _bitmapData1.setPixel32(16, 7, 4278190080); _bitmapData1.setPixel32(16, 8, 4278190080); _bitmapData1.setPixel32(16, 9, 4278190080); _bitmapData1.setPixel32(16, 10, 4278190080); _bitmapData1.setPixel32(16, 12, 4278190080); _bitmapData1.setPixel32(16, 13, 4278190080); _bitmapData1.setPixel32(16, 14, 4278190080); _bitmapData1.setPixel32(16, 15, 4278190080); _bitmapData1.setPixel32(16, 16, 4278190080); _bitmapData1.setPixel32(16, 17, 4278190080); _bitmapData1.setPixel32(16, 18, 4278190080); _bitmapData1.setPixel32(16, 19, 4278190080); _bitmapData1.setPixel32(16, 20, 4278190080); _bitmapData1.setPixel32(16, 21, 4278190080); _bitmapData1.setPixel32(16, 22, 4278190080); _bitmapData1.setPixel32(16, 23, 4278190080); _bitmapData1.setPixel32(17, 1, 4278190080); _bitmapData1.setPixel32(17, 2, 4278190080); _bitmapData1.setPixel32(17, 3, 4278190080); _bitmapData1.setPixel32(17, 4, 4278190080); _bitmapData1.setPixel32(17, 5, 4278190080); _bitmapData1.setPixel32(17, 6, 4278190080); _bitmapData1.setPixel32(17, 7, 4278190080); _bitmapData1.setPixel32(17, 8, 4278190080); _bitmapData1.setPixel32(17, 9, 4278190080); _bitmapData1.setPixel32(17, 10, 4278190080); _bitmapData1.setPixel32(17, 12, 4278190080); _bitmapData1.setPixel32(17, 13, 4278190080); _bitmapData1.setPixel32(17, 14, 4278190080); _bitmapData1.setPixel32(17, 15, 4278190080); _bitmapData1.setPixel32(17, 16, 4278190080); _bitmapData1.setPixel32(17, 17, 4278190080); _bitmapData1.setPixel32(17, 18, 4278190080); _bitmapData1.setPixel32(17, 19, 4278190080); _bitmapData1.setPixel32(17, 20, 4278190080); _bitmapData1.setPixel32(17, 21, 4278190080); _bitmapData1.setPixel32(17, 22, 4278190080); _bitmapData1.setPixel32(17, 23, 4278190080); _bitmapData1.setPixel32(18, 1, 4278190080); _bitmapData1.setPixel32(18, 2, 4278190080); _bitmapData1.setPixel32(18, 3, 4278190080); _bitmapData1.setPixel32(18, 4, 4294967295); _bitmapData1.setPixel32(18, 5, 4294967295); _bitmapData1.setPixel32(18, 6, 4294967295); _bitmapData1.setPixel32(18, 7, 4278190080); _bitmapData1.setPixel32(18, 8, 4278190080); _bitmapData1.setPixel32(18, 9, 4278190080); _bitmapData1.setPixel32(18, 10, 4278190080); _bitmapData1.setPixel32(18, 12, 4278190080); _bitmapData1.setPixel32(18, 13, 4278190080); _bitmapData1.setPixel32(18, 14, 4278190080); _bitmapData1.setPixel32(18, 15, 4278190080); _bitmapData1.setPixel32(18, 16, 4278190080); _bitmapData1.setPixel32(18, 17, 4278190080); _bitmapData1.setPixel32(18, 18, 4278190080); _bitmapData1.setPixel32(18, 19, 4278190080); _bitmapData1.setPixel32(18, 20, 4278190080); _bitmapData1.setPixel32(18, 21, 4278190080); _bitmapData1.setPixel32(18, 22, 4278190080); _bitmapData1.setPixel32(18, 23, 4278190080); _bitmapData1.setPixel32(18, 25, 4278190080); _bitmapData1.setPixel32(18, 26, 4278190080); _bitmapData1.setPixel32(18, 27, 4278190080); _bitmapData1.setPixel32(18, 28, 4278190080); _bitmapData1.setPixel32(18, 29, 4278190080); _bitmapData1.setPixel32(18, 30, 4278190080); _bitmapData1.setPixel32(19, 1, 4278190080); _bitmapData1.setPixel32(19, 2, 4278190080); _bitmapData1.setPixel32(19, 3, 4278190080); _bitmapData1.setPixel32(19, 4, 4278190080); _bitmapData1.setPixel32(19, 5, 4278190080); _bitmapData1.setPixel32(19, 6, 4278190080); _bitmapData1.setPixel32(19, 7, 4278190080); _bitmapData1.setPixel32(19, 8, 4278190080); _bitmapData1.setPixel32(19, 9, 4278190080); _bitmapData1.setPixel32(19, 10, 4278190080); _bitmapData1.setPixel32(19, 12, 4278190080); _bitmapData1.setPixel32(19, 13, 4278190080); _bitmapData1.setPixel32(19, 14, 4278190080); _bitmapData1.setPixel32(19, 15, 4278190080); _bitmapData1.setPixel32(19, 16, 4278190080); _bitmapData1.setPixel32(19, 17, 4278190080); _bitmapData1.setPixel32(19, 18, 4278190080); _bitmapData1.setPixel32(19, 19, 4278190080); _bitmapData1.setPixel32(19, 20, 4278190080); _bitmapData1.setPixel32(19, 21, 4278190080); _bitmapData1.setPixel32(19, 22, 4278190080); _bitmapData1.setPixel32(19, 23, 4278190080); _bitmapData1.setPixel32(20, 1, 4278190080); _bitmapData1.setPixel32(20, 2, 4278190080); _bitmapData1.setPixel32(20, 3, 4278190080); _bitmapData1.setPixel32(20, 4, 4278190080); _bitmapData1.setPixel32(20, 5, 4278190080); _bitmapData1.setPixel32(20, 6, 4278190080); _bitmapData1.setPixel32(20, 7, 4278190080); _bitmapData1.setPixel32(20, 8, 4278190080); _bitmapData1.setPixel32(20, 9, 4278190080); _bitmapData1.setPixel32(20, 10, 4278190080); _bitmapData1.setPixel32(20, 12, 4278190080); _bitmapData1.setPixel32(20, 13, 4278190080); _bitmapData1.setPixel32(20, 14, 4278190080); _bitmapData1.setPixel32(20, 15, 4278190080); _bitmapData1.setPixel32(20, 16, 4278190080); _bitmapData1.setPixel32(20, 17, 4278190080); _bitmapData1.setPixel32(20, 18, 4278190080); _bitmapData1.setPixel32(20, 19, 4278190080); _bitmapData1.setPixel32(20, 20, 4278190080); _bitmapData1.setPixel32(20, 21, 4278190080); _bitmapData1.setPixel32(20, 22, 4278190080); _bitmapData1.setPixel32(20, 23, 4278190080); _bitmapData1.setPixel32(21, 1, 4278190080); _bitmapData1.setPixel32(21, 2, 4278190080); _bitmapData1.setPixel32(21, 3, 4278190080); _bitmapData1.setPixel32(21, 4, 4278190080); _bitmapData1.setPixel32(21, 5, 4278190080); _bitmapData1.setPixel32(21, 6, 4278190080); _bitmapData1.setPixel32(21, 7, 4278190080); _bitmapData1.setPixel32(21, 8, 4278190080); _bitmapData1.setPixel32(21, 9, 4278190080); _bitmapData1.setPixel32(21, 10, 4278190080); _bitmapData1.setPixel32(22, 15, 4278190080); _bitmapData1.setPixel32(22, 16, 4278190080); _bitmapData1.setPixel32(22, 17, 4278190080); _bitmapData1.setPixel32(22, 18, 4278190080); _bitmapData1.setPixel32(22, 19, 4278190080); } /** * draw avatar status 2 */ private function drawState2():void { _bitmapData2 = new BitmapData(WIDTH, HEIGHT, true, 0x00000000); _bitmapData2.setPixel32(6, 18, 4278190080); _bitmapData2.setPixel32(7, 17, 4278190080); _bitmapData2.setPixel32(8, 16, 4278190080); _bitmapData2.setPixel32(9, 15, 4278190080); _bitmapData2.setPixel32(9, 29, 4278190080); _bitmapData2.setPixel32(10, 1, 4278190080); _bitmapData2.setPixel32(10, 2, 4278190080); _bitmapData2.setPixel32(10, 3, 4278190080); _bitmapData2.setPixel32(10, 4, 4278190080); _bitmapData2.setPixel32(10, 5, 4278190080); _bitmapData2.setPixel32(10, 6, 4278190080); _bitmapData2.setPixel32(10, 7, 4278190080); _bitmapData2.setPixel32(10, 8, 4278190080); _bitmapData2.setPixel32(10, 9, 4278190080); _bitmapData2.setPixel32(10, 10, 4278190080); _bitmapData2.setPixel32(10, 28, 4278190080); _bitmapData2.setPixel32(11, 1, 4278190080); _bitmapData2.setPixel32(11, 2, 4278190080); _bitmapData2.setPixel32(11, 3, 4278190080); _bitmapData2.setPixel32(11, 4, 4278190080); _bitmapData2.setPixel32(11, 5, 4278190080); _bitmapData2.setPixel32(11, 6, 4278190080); _bitmapData2.setPixel32(11, 7, 4278190080); _bitmapData2.setPixel32(11, 8, 4278190080); _bitmapData2.setPixel32(11, 9, 4278190080); _bitmapData2.setPixel32(11, 10, 4278190080); _bitmapData2.setPixel32(11, 12, 4278190080); _bitmapData2.setPixel32(11, 13, 4278190080); _bitmapData2.setPixel32(11, 14, 4278190080); _bitmapData2.setPixel32(11, 15, 4278190080); _bitmapData2.setPixel32(11, 16, 4278190080); _bitmapData2.setPixel32(11, 17, 4278190080); _bitmapData2.setPixel32(11, 18, 4278190080); _bitmapData2.setPixel32(11, 19, 4278190080); _bitmapData2.setPixel32(11, 20, 4278190080); _bitmapData2.setPixel32(11, 21, 4278190080); _bitmapData2.setPixel32(11, 22, 4278190080); _bitmapData2.setPixel32(11, 23, 4278190080); _bitmapData2.setPixel32(11, 27, 4278190080); _bitmapData2.setPixel32(12, 1, 4278190080); _bitmapData2.setPixel32(12, 2, 4278190080); _bitmapData2.setPixel32(12, 3, 4278190080); _bitmapData2.setPixel32(12, 4, 4278190080); _bitmapData2.setPixel32(12, 5, 4278190080); _bitmapData2.setPixel32(12, 6, 4278190080); _bitmapData2.setPixel32(12, 7, 4278190080); _bitmapData2.setPixel32(12, 8, 4278190080); _bitmapData2.setPixel32(12, 9, 4278190080); _bitmapData2.setPixel32(12, 10, 4278190080); _bitmapData2.setPixel32(12, 12, 4278190080); _bitmapData2.setPixel32(12, 13, 4278190080); _bitmapData2.setPixel32(12, 14, 4278190080); _bitmapData2.setPixel32(12, 15, 4278190080); _bitmapData2.setPixel32(12, 16, 4278190080); _bitmapData2.setPixel32(12, 17, 4278190080); _bitmapData2.setPixel32(12, 18, 4278190080); _bitmapData2.setPixel32(12, 19, 4278190080); _bitmapData2.setPixel32(12, 20, 4278190080); _bitmapData2.setPixel32(12, 21, 4278190080); _bitmapData2.setPixel32(12, 22, 4278190080); _bitmapData2.setPixel32(12, 23, 4278190080); _bitmapData2.setPixel32(12, 26, 4278190080); _bitmapData2.setPixel32(13, 1, 4278190080); _bitmapData2.setPixel32(13, 2, 4278190080); _bitmapData2.setPixel32(13, 3, 4278190080); _bitmapData2.setPixel32(13, 4, 4294967295); _bitmapData2.setPixel32(13, 5, 4294967295); _bitmapData2.setPixel32(13, 6, 4294967295); _bitmapData2.setPixel32(13, 7, 4278190080); _bitmapData2.setPixel32(13, 8, 4278190080); _bitmapData2.setPixel32(13, 9, 4278190080); _bitmapData2.setPixel32(13, 10, 4278190080); _bitmapData2.setPixel32(13, 12, 4278190080); _bitmapData2.setPixel32(13, 13, 4278190080); _bitmapData2.setPixel32(13, 14, 4278190080); _bitmapData2.setPixel32(13, 15, 4278190080); _bitmapData2.setPixel32(13, 16, 4278190080); _bitmapData2.setPixel32(13, 17, 4278190080); _bitmapData2.setPixel32(13, 18, 4278190080); _bitmapData2.setPixel32(13, 19, 4278190080); _bitmapData2.setPixel32(13, 20, 4278190080); _bitmapData2.setPixel32(13, 21, 4278190080); _bitmapData2.setPixel32(13, 22, 4278190080); _bitmapData2.setPixel32(13, 23, 4278190080); _bitmapData2.setPixel32(14, 1, 4278190080); _bitmapData2.setPixel32(14, 2, 4278190080); _bitmapData2.setPixel32(14, 3, 4278190080); _bitmapData2.setPixel32(14, 4, 4278190080); _bitmapData2.setPixel32(14, 5, 4278190080); _bitmapData2.setPixel32(14, 6, 4278190080); _bitmapData2.setPixel32(14, 7, 4278190080); _bitmapData2.setPixel32(14, 8, 4278190080); _bitmapData2.setPixel32(14, 9, 4278190080); _bitmapData2.setPixel32(14, 10, 4278190080); _bitmapData2.setPixel32(14, 12, 4278190080); _bitmapData2.setPixel32(14, 13, 4278190080); _bitmapData2.setPixel32(14, 14, 4278190080); _bitmapData2.setPixel32(14, 15, 4278190080); _bitmapData2.setPixel32(14, 16, 4278190080); _bitmapData2.setPixel32(14, 17, 4278190080); _bitmapData2.setPixel32(14, 18, 4278190080); _bitmapData2.setPixel32(14, 19, 4278190080); _bitmapData2.setPixel32(14, 20, 4278190080); _bitmapData2.setPixel32(14, 21, 4278190080); _bitmapData2.setPixel32(14, 22, 4278190080); _bitmapData2.setPixel32(14, 23, 4278190080); _bitmapData2.setPixel32(15, 1, 4278190080); _bitmapData2.setPixel32(15, 2, 4278190080); _bitmapData2.setPixel32(15, 3, 4278190080); _bitmapData2.setPixel32(15, 4, 4278190080); _bitmapData2.setPixel32(15, 5, 4278190080); _bitmapData2.setPixel32(15, 6, 4278190080); _bitmapData2.setPixel32(15, 7, 4278190080); _bitmapData2.setPixel32(15, 8, 4278190080); _bitmapData2.setPixel32(15, 9, 4278190080); _bitmapData2.setPixel32(15, 10, 4278190080); _bitmapData2.setPixel32(15, 12, 4278190080); _bitmapData2.setPixel32(15, 13, 4278190080); _bitmapData2.setPixel32(15, 14, 4278190080); _bitmapData2.setPixel32(15, 15, 4278190080); _bitmapData2.setPixel32(15, 16, 4278190080); _bitmapData2.setPixel32(15, 17, 4278190080); _bitmapData2.setPixel32(15, 18, 4278190080); _bitmapData2.setPixel32(15, 19, 4278190080); _bitmapData2.setPixel32(15, 20, 4278190080); _bitmapData2.setPixel32(15, 21, 4278190080); _bitmapData2.setPixel32(15, 22, 4278190080); _bitmapData2.setPixel32(15, 23, 4278190080); _bitmapData2.setPixel32(16, 1, 4278190080); _bitmapData2.setPixel32(16, 2, 4278190080); _bitmapData2.setPixel32(16, 3, 4278190080); _bitmapData2.setPixel32(16, 4, 4278190080); _bitmapData2.setPixel32(16, 5, 4278190080); _bitmapData2.setPixel32(16, 6, 4278190080); _bitmapData2.setPixel32(16, 7, 4278190080); _bitmapData2.setPixel32(16, 8, 4278190080); _bitmapData2.setPixel32(16, 9, 4278190080); _bitmapData2.setPixel32(16, 10, 4278190080); _bitmapData2.setPixel32(16, 12, 4278190080); _bitmapData2.setPixel32(16, 13, 4278190080); _bitmapData2.setPixel32(16, 14, 4278190080); _bitmapData2.setPixel32(16, 15, 4278190080); _bitmapData2.setPixel32(16, 16, 4278190080); _bitmapData2.setPixel32(16, 17, 4278190080); _bitmapData2.setPixel32(16, 18, 4278190080); _bitmapData2.setPixel32(16, 19, 4278190080); _bitmapData2.setPixel32(16, 20, 4278190080); _bitmapData2.setPixel32(16, 21, 4278190080); _bitmapData2.setPixel32(16, 22, 4278190080); _bitmapData2.setPixel32(16, 23, 4278190080); _bitmapData2.setPixel32(17, 1, 4278190080); _bitmapData2.setPixel32(17, 2, 4278190080); _bitmapData2.setPixel32(17, 3, 4278190080); _bitmapData2.setPixel32(17, 4, 4278190080); _bitmapData2.setPixel32(17, 5, 4278190080); _bitmapData2.setPixel32(17, 6, 4278190080); _bitmapData2.setPixel32(17, 7, 4278190080); _bitmapData2.setPixel32(17, 8, 4278190080); _bitmapData2.setPixel32(17, 9, 4278190080); _bitmapData2.setPixel32(17, 10, 4278190080); _bitmapData2.setPixel32(17, 12, 4278190080); _bitmapData2.setPixel32(17, 13, 4278190080); _bitmapData2.setPixel32(17, 14, 4278190080); _bitmapData2.setPixel32(17, 15, 4278190080); _bitmapData2.setPixel32(17, 16, 4278190080); _bitmapData2.setPixel32(17, 17, 4278190080); _bitmapData2.setPixel32(17, 18, 4278190080); _bitmapData2.setPixel32(17, 19, 4278190080); _bitmapData2.setPixel32(17, 20, 4278190080); _bitmapData2.setPixel32(17, 21, 4278190080); _bitmapData2.setPixel32(17, 22, 4278190080); _bitmapData2.setPixel32(17, 23, 4278190080); _bitmapData2.setPixel32(18, 1, 4278190080); _bitmapData2.setPixel32(18, 2, 4278190080); _bitmapData2.setPixel32(18, 3, 4278190080); _bitmapData2.setPixel32(18, 4, 4294967295); _bitmapData2.setPixel32(18, 5, 4294967295); _bitmapData2.setPixel32(18, 6, 4294967295); _bitmapData2.setPixel32(18, 7, 4278190080); _bitmapData2.setPixel32(18, 8, 4278190080); _bitmapData2.setPixel32(18, 9, 4278190080); _bitmapData2.setPixel32(18, 10, 4278190080); _bitmapData2.setPixel32(18, 12, 4278190080); _bitmapData2.setPixel32(18, 13, 4278190080); _bitmapData2.setPixel32(18, 14, 4278190080); _bitmapData2.setPixel32(18, 15, 4278190080); _bitmapData2.setPixel32(18, 16, 4278190080); _bitmapData2.setPixel32(18, 17, 4278190080); _bitmapData2.setPixel32(18, 18, 4278190080); _bitmapData2.setPixel32(18, 19, 4278190080); _bitmapData2.setPixel32(18, 20, 4278190080); _bitmapData2.setPixel32(18, 21, 4278190080); _bitmapData2.setPixel32(18, 22, 4278190080); _bitmapData2.setPixel32(18, 23, 4278190080); _bitmapData2.setPixel32(19, 1, 4278190080); _bitmapData2.setPixel32(19, 2, 4278190080); _bitmapData2.setPixel32(19, 3, 4278190080); _bitmapData2.setPixel32(19, 4, 4278190080); _bitmapData2.setPixel32(19, 5, 4278190080); _bitmapData2.setPixel32(19, 6, 4278190080); _bitmapData2.setPixel32(19, 7, 4278190080); _bitmapData2.setPixel32(19, 8, 4278190080); _bitmapData2.setPixel32(19, 9, 4278190080); _bitmapData2.setPixel32(19, 10, 4278190080); _bitmapData2.setPixel32(19, 12, 4278190080); _bitmapData2.setPixel32(19, 13, 4278190080); _bitmapData2.setPixel32(19, 14, 4278190080); _bitmapData2.setPixel32(19, 15, 4278190080); _bitmapData2.setPixel32(19, 16, 4278190080); _bitmapData2.setPixel32(19, 17, 4278190080); _bitmapData2.setPixel32(19, 18, 4278190080); _bitmapData2.setPixel32(19, 19, 4278190080); _bitmapData2.setPixel32(19, 20, 4278190080); _bitmapData2.setPixel32(19, 21, 4278190080); _bitmapData2.setPixel32(19, 22, 4278190080); _bitmapData2.setPixel32(19, 23, 4278190080); _bitmapData2.setPixel32(19, 26, 4278190080); _bitmapData2.setPixel32(20, 1, 4278190080); _bitmapData2.setPixel32(20, 2, 4278190080); _bitmapData2.setPixel32(20, 3, 4278190080); _bitmapData2.setPixel32(20, 4, 4278190080); _bitmapData2.setPixel32(20, 5, 4278190080); _bitmapData2.setPixel32(20, 6, 4278190080); _bitmapData2.setPixel32(20, 7, 4278190080); _bitmapData2.setPixel32(20, 8, 4278190080); _bitmapData2.setPixel32(20, 9, 4278190080); _bitmapData2.setPixel32(20, 10, 4278190080); _bitmapData2.setPixel32(20, 12, 4278190080); _bitmapData2.setPixel32(20, 13, 4278190080); _bitmapData2.setPixel32(20, 14, 4278190080); _bitmapData2.setPixel32(20, 15, 4278190080); _bitmapData2.setPixel32(20, 16, 4278190080); _bitmapData2.setPixel32(20, 17, 4278190080); _bitmapData2.setPixel32(20, 18, 4278190080); _bitmapData2.setPixel32(20, 19, 4278190080); _bitmapData2.setPixel32(20, 20, 4278190080); _bitmapData2.setPixel32(20, 21, 4278190080); _bitmapData2.setPixel32(20, 22, 4278190080); _bitmapData2.setPixel32(20, 23, 4278190080); _bitmapData2.setPixel32(20, 27, 4278190080); _bitmapData2.setPixel32(21, 1, 4278190080); _bitmapData2.setPixel32(21, 2, 4278190080); _bitmapData2.setPixel32(21, 3, 4278190080); _bitmapData2.setPixel32(21, 4, 4278190080); _bitmapData2.setPixel32(21, 5, 4278190080); _bitmapData2.setPixel32(21, 6, 4278190080); _bitmapData2.setPixel32(21, 7, 4278190080); _bitmapData2.setPixel32(21, 8, 4278190080); _bitmapData2.setPixel32(21, 9, 4278190080); _bitmapData2.setPixel32(21, 10, 4278190080); _bitmapData2.setPixel32(21, 28, 4278190080); _bitmapData2.setPixel32(22, 15, 4278190080); _bitmapData2.setPixel32(22, 29, 4278190080); _bitmapData2.setPixel32(23, 16, 4278190080); _bitmapData2.setPixel32(24, 17, 4278190080); _bitmapData2.setPixel32(25, 18, 4278190080); } } /** * Balloon */ import fl.transitions.easing.Strong; import fl.transitions.Tween; import fl.transitions.TweenEvent; import flash.display.Graphics; import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.TextEvent; import flash.events.TimerEvent; import flash.filters.DropShadowFilter; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; import flash.text.TextFormat; import flash.utils.Timer; class Balloon extends Sprite { private var _clientData:ClientData; /** balloon */ private var _balloon:Sprite; /** message TextField */ private var _messageField:TextField; /** message max width */ private var _maxWidth:Number; /** timer */ private var _timer:Timer; /** balloon alpha */ private static const BALLOON_ALPHA:Number = 0.9; /** message size */ private static const MESSAGE_SIZE:Number = 11; /** message font */ private static const MESSAGE_FONT:String = "_等幅"; /** message mergin */ private static const MESSAGE_MERGIN:uint = 10; /** * construcor */ public function Balloon(clientData:ClientData, maxWidth:Number = 125) { _clientData = clientData; cacheAsBitmap = true; // balloon image _balloon = new Sprite(); _balloon.filters = [new DropShadowFilter(4.0, 45, 0, 0.3)]; addChild(_balloon); // message text var messageFormat:TextFormat = new TextFormat(); messageFormat.font = MESSAGE_FONT; messageFormat.size = MESSAGE_SIZE; _messageField = new TextField(); _messageField.type = TextFieldType.DYNAMIC; _messageField.autoSize = TextFieldAutoSize.LEFT; _messageField.selectable = false; _messageField.multiline = true; _messageField.width = 0; _messageField.defaultTextFormat = messageFormat; _messageField.x = _messageField.y = MESSAGE_MERGIN; _maxWidth = maxWidth; addChild(_messageField); _timer = new Timer(15000, 1); } /** * message */ public function setMessage(msg:String, direction:Number):void { _timer.stop(); _timer.removeEventListener(TimerEvent.TIMER, disappear); if (msg != _messageField.htmlText) { if (!msg) msg = ""; _messageField.visible = false; _messageField.width = 0; _messageField.wordWrap = false; _messageField.htmlText = msg; if (_messageField.width >= _maxWidth) { _messageField.width = _maxWidth; _messageField.wordWrap = true; } else { _messageField.wordWrap = false; } _messageField.visible = true; } setDirection(direction); visible = true; _timer.addEventListener(TimerEvent.TIMER, disappear); _timer.start(); } /** * move balloon * @param direction(0:up, 1:right, 2:down, 3:left) */ public function setDirection(direction:uint):void { var gra:Graphics = _balloon.graphics; gra.clear(); if (_messageField.htmlText == "") return; var ballonWidth:Number = _messageField.width + MESSAGE_MERGIN * 2; var ballonHeight:Number = _messageField.height + MESSAGE_MERGIN * 2; gra.beginFill(0xFFFFFF, BALLOON_ALPHA); gra.drawRoundRect(0, 0, ballonWidth, ballonHeight, 20, 20); gra.endFill(); switch (direction) { case 1: // 噴出しの三角が右に表示 { gra.beginFill(0xFFFFFF, BALLOON_ALPHA); gra.moveTo(0 + ballonWidth, 10); gra.curveTo(2 + ballonWidth, 9, 13 + ballonWidth, 21); gra.curveTo(5 + ballonWidth, 16, 0 + ballonWidth, 17); gra.endFill(); _balloon.x = 0; _messageField.x = MESSAGE_MERGIN; break; } case 3: // 噴出しの三角が左に表示 { gra.beginFill(0xFFFFFF, BALLOON_ALPHA); gra.moveTo(0, 10); gra.curveTo(-2, 9,-13, 21); gra.curveTo(-5, 16, 0, 17); gra.endFill(); _balloon.x = 13; _messageField.x = 13 + MESSAGE_MERGIN; break; } } } /** * disappear * @param event */ private function disappear(event:TimerEvent):void { _timer.removeEventListener(TimerEvent.TIMER, disappear); _messageField.htmlText = ""; _clientData.comment = ""; visible = false; } } /** * RGB Color palette * * @author Copyright (C) naoto koshikawa, All Rights Reserved. */ import flash.display.BitmapData; import flash.display.Graphics; import flash.display.Shape; import flash.display.Sprite; class ColorPalette extends Sprite { //---------------------------------------------------------------------- // properties //---------------------------------------------------------------------- //------------------------------ // public properties //------------------------------ private var _bitmapData:BitmapData; /** * 参照用 bitmapData<br /> * カラーピッカーとして利用する場合にはColorPaletteにMouseEventのリスナーを登録し<br /> * ハンドラ内でBitmapData::getPixelやBitmapData::getPixel32を用いて<br /> * パレット内の色を参照して下さい。 */ public function get bitmapData():BitmapData { return _bitmapData; } //---------------------------------------------------------------------- // method //---------------------------------------------------------------------- /** * constructor * @param colorStep パレットの色ステップを指定します。0x33でweb safe colorが生成されます。 * @param cellSize パレットのセルのサイズを指定します。 * @param cellMargin パレットのセル同士のマージンを指定します。 * @param colmunCount パレットの1区画分の塊を横方向にいくつ配置するかを指定します。 */ public function ColorPalette(colorStep:uint, cellSize:uint = 10, cellMargin:Number = 0, columnCount:uint = 2) { var generator:ColorGenerator = new ColorGenerator(colorStep); var colors:Array = generator.colors; var count:uint = generator.eachCount; var colorList:Array = []; var container:Sprite = new Sprite(); container.graphics.drawRect( 0, 0, count * (cellSize + cellMargin) * columnCount - cellMargin, count * (cellSize + cellMargin) * count / columnCount - cellMargin ); addChild(container); for (var r:uint = 0; r < count; r++) { for (var g:uint = 0; g < count; g++) { for (var b:uint = 0; b < count; b++) { var cellX:uint = r * (cellSize + cellMargin) * count + g * (cellSize + cellMargin) - Math.floor(r / columnCount) * (cellSize + cellMargin) * count * columnCount; var cellY:uint = Math.floor(r / columnCount) * (cellSize + cellMargin) * count + b * (cellSize + cellMargin); var cell:Shape = new Shape(); var cellGraphics:Graphics = cell.graphics; cellGraphics.beginFill(colors[r][g][b], 1.0); cellGraphics.drawRect(0, 0, cellSize, cellSize); cell.x = cellX; cell.y = cellY; colorList.push(container.addChild(cell)); } } } _bitmapData = new BitmapData(width, height, true, 0); _bitmapData.draw(this); } } /** * color generator * @author naoto koshikawa */ class ColorGenerator { //---------------------------------------------------------------------- // properties //---------------------------------------------------------------------- //------------------------------ // static //------------------------------ /** * step of web safe color */ public static const WEB_SAFE_COLOR:uint = 0x33; /** * error message */ private static const ERROR_MESSAGE:String = "arguments error"; /** * rgb element max */ private static const RGB_ELEMENT_MAX:uint = 0xFF; //------------------------------ // public properties //------------------------------ private var _colors:Array; /** * generated colors Array */ public function get colors():Array { return _colors; } private var _eachCount:uint; /** * each count of per color element */ public function get eachCount():uint { return _eachCount; } private var _count:uint; /** * color count */ public function get count():uint { return _count; } /** * element step */ private var _step:uint; //---------------------------------------------------------------------- // method //---------------------------------------------------------------------- /** * constructor * @param step step generated colors */ public function ColorGenerator(step:uint = ColorGenerator.WEB_SAFE_COLOR) { if (step == 0) throw(ArgumentError(ERROR_MESSAGE)); if (RGB_ELEMENT_MAX < step) throw(ArgumentError(ERROR_MESSAGE)); if (RGB_ELEMENT_MAX % step != 0) throw(ArgumentError(ERROR_MESSAGE)); _step = step; _eachCount = RGB_ELEMENT_MAX / _step + 1; _count = _eachCount * _eachCount * _eachCount; // R colors * G colors * B colors generate(); } /** * generate colors */ private function generate():void { _colors = []; for (var r:uint = 0; r < _eachCount; r++) { _colors[r] = []; for (var g:uint = 0; g < _eachCount; g++) { _colors[r][g] = []; for (var b:uint = 0; b < _eachCount; b++) { _colors[r][g][b] = _step * r << 16 | _step * g << 8 | _step * b; } } } } } Union Platform avatar chat forked from: colin challenge for professionals