Last active
August 29, 2015 13:56
-
-
Save nicholasdunbar/8794024 to your computer and use it in GitHub Desktop.
Bare bones resizable window in ActionScript 3 (AS3) without Flex library dependancies. See example here http://actionscript-flash-guru.com/blog/16-code-for-a-resizable-window-in-as3.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//See a live example of this code (pre forked): | |
//http://www.actionscript-flash-guru.com/example_files/embed_scripts/resize_example.html | |
//You can download a full example of the original code SWFs (pre forked): | |
//http://www.actionscript-flash-guru.com/example_files/resize_window_files.zip | |
/************START EXAMPLE:****************/ | |
//this bit of code relies on these classes (ResizeWindow and UiEvent) which I have listed below the code surrounded by END and START EXAMPLE | |
import com.actionscriptflashguru.ResizeWindow; | |
import com.actionscriptflashguru.UiEvent; | |
function onResizeUi(e:UiEvent):void{ | |
var obj:Object = e.params; | |
//the new X and Y locations of the window | |
//obj.x; | |
//obj.y; | |
//the new width and height of the window | |
//obj.width; | |
//obj.height; | |
if (obj.isResizeAll != null){ | |
//the window has not yet been initialized | |
thingToResize_mc.width = obj.width; | |
thingToResize_mc.height = obj.height; | |
thingToResize_mc.x = obj.x; | |
thingToResize_mc.y = obj.y; | |
trace("obj.isResizeAll != null"); | |
} else { | |
thingToResize_mc.x = obj.x; | |
thingToResize_mc.y = obj.y; | |
thingToResize_mc.width = obj.width; | |
thingToResize_mc.height = obj.height; | |
} | |
} | |
var minWidth:Number = 300; | |
var minHeight:Number = 200; | |
var originalStageWidth:Number = this.stage.stageWidth; | |
var originalStageHeight:Number = this.stage.stageHeight; | |
var sizeObj:Object = {x:20, y:20, width:310, height:210}; | |
resizer_mc.x = sizeObj.x; | |
resizer_mc.y = sizeObj.y; | |
thingToResize_mc.x = sizeObj.x+20; | |
thingToResize_mc.y = sizeObj.y+20; | |
thingToResize_mc.width = sizeObj.width; | |
thingToResize_mc.height = sizeObj.height; | |
var resizer:ResizeWindow = new ResizeWindow(resizer_mc, minWidth, minHeight, originalStageWidth, originalStageHeight); | |
//set the starting window size resizer.setSize(sizeObj.x, sizeObj.y, sizeObj.width, sizeObj.height); | |
resizer.addEventListener(UiEvent.RESIZE_WINDOW, onResizeUi); | |
/************:END EXAMPLE****************/ | |
/************classes required to make this work are included in https://gist.github.com/nicholasdunbar/8794024****************/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.actionscriptflashguru { | |
//native libs | |
import flash.display.Sprite; | |
import flash.display.Stage; | |
import flash.display.MovieClip; | |
import flash.events.MouseEvent; | |
import flash.events.Event; | |
import flash.events.TextEvent; | |
import flash.events.EventDispatcher; | |
import flash.display.DisplayObject; | |
import flash.display.DisplayObjectContainer; | |
import flash.geom.Rectangle; | |
import flash.geom.Point; | |
import flash.external.ExternalInterface; | |
//my libs | |
import com.actionscriptflashguru.UiEvent; | |
public class ResizeWindow extends EventDispatcher{ | |
//window container | |
private var _this:Sprite; | |
//resize cursors: | |
private var _iconTopLeft:Sprite; | |
private var _iconTopRight:Sprite; | |
private var _iconTop:Sprite; | |
private var _iconBottomLeft:Sprite; | |
private var _iconBottomRight:Sprite; | |
private var _iconBottom:Sprite; | |
private var _iconRight:Sprite; | |
private var _iconLeft:Sprite; | |
//resize hit zones | |
private var _barTop:Sprite; | |
private var _barBottom:Sprite; | |
private var _originalXBarBottom:Number; | |
private var _barRight:Sprite; | |
private var _originalYBarRight:Number; | |
private var _barLeft:Sprite; | |
private var _cornerBottomLeft:Sprite; | |
private var _cornerTopLeft:Sprite; | |
private var _cornerBottomRight:Sprite; | |
private var _cornerTopRight:Sprite; | |
//this is the bar that does no resizing it just moves the window around | |
private var _topMoveBar:Sprite; | |
//background | |
private var _bg:Sprite; | |
private var _originalYBg:Number; | |
private var _originalXBg:Number; | |
//drag states | |
private var _minWidth:Number; | |
private var _minHeight:Number; | |
private var _nativeWindowSizeHeight:Number; | |
private var _nativeWindowSizeWidth:Number; | |
private var _mysteryBox:Object; | |
private var _windowBounds:DisplayObject; | |
private var _isInit:Boolean; | |
// | |
private static const _HITZONE_FRAME_THICKNESS:int = 10; | |
private static const _FRAME_ALPHA:Number = 0.0; | |
public function ResizeWindow(d:DisplayObjectContainer, minWidth:Number, minHeight:Number, nativeWindowSizeWidth:Number = -1, nativeWindowSizeHeight:Number = -1):void { | |
_mysteryBox = d; | |
if (minWidth <= 0 || minHeight <= 0){ | |
trace("minWidth or minHeight cannot be less than or equal to 0"); | |
return; | |
} | |
_nativeWindowSizeWidth = nativeWindowSizeWidth; | |
_nativeWindowSizeHeight = nativeWindowSizeHeight; | |
_minWidth = minWidth; | |
_minHeight = minHeight; | |
//set resizer to visible | |
_this = d as Sprite; | |
_this.visible = false; | |
_this.alpha = 0; | |
if (_this.stage.stageWidth == 0 && _this.stage.stageHeight == 0){ | |
_this.root.addEventListener(Event.ENTER_FRAME, _init); | |
} else { | |
_init(); | |
} | |
} | |
public function destroy():void{ | |
if (_this.root.hasEventListener(Event.ENTER_FRAME)){ | |
_this.root.removeEventListener(Event.ENTER_FRAME, _init); | |
} | |
if (_barRight != null && _barRight.hasEventListener(MouseEvent.MOUSE_DOWN)){ | |
_barRight.removeEventListener(MouseEvent.MOUSE_DOWN, _onRightDown); | |
} | |
if (_barRight != null && _barRight.hasEventListener(MouseEvent.MOUSE_UP)){ | |
_barRight.removeEventListener(MouseEvent.MOUSE_UP, _onRightUp); | |
} | |
//TODO: need to remove the rest of the listeners | |
/* | |
_barRight.addEventListener(MouseEvent.MOUSE_MOVE, _onRightMove); | |
_barRight.addEventListener(MouseEvent.MOUSE_OUT, _onRightOut); | |
_barBottom.addEventListener(MouseEvent.MOUSE_DOWN, _onBottomDown); | |
_barBottom.addEventListener(MouseEvent.MOUSE_UP, _onBottomUp); | |
_barBottom.addEventListener(MouseEvent.MOUSE_MOVE, _onBottomMove); | |
_barBottom.addEventListener(MouseEvent.MOUSE_OUT, _onBottomOut); | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_DOWN, _onBottomRightDown); | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_UP, _onBottomRightUp); | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_MOVE, _onBottomRightOver); | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_OUT, _onBottomRightOut); | |
_barLeft.addEventListener(MouseEvent.MOUSE_DOWN, _onLeftDown); | |
_barLeft.addEventListener(MouseEvent.MOUSE_UP, _onLeftUp); | |
_barLeft.addEventListener(MouseEvent.MOUSE_MOVE, _onLeftMove); | |
_barLeft.addEventListener(MouseEvent.MOUSE_OUT, _onLeftOut); | |
_cornerBottomLeft.addEventListener(MouseEvent.MOUSE_DOWN, _onBottomLeftDown); | |
_cornerBottomLeft.addEventListener(MouseEvent.MOUSE_UP, _onBottomLeftUp); | |
_cornerBottomLeft.addEventListener(MouseEvent.MOUSE_MOVE, _onBottomLeftOver); | |
_cornerBottomLeft.addEventListener(MouseEvent.MOUSE_OUT, _onBottomLeftOut); | |
_barTop.addEventListener(MouseEvent.MOUSE_DOWN, _onTopDown); | |
_barTop.addEventListener(MouseEvent.MOUSE_UP, _onTopUp); | |
_barTop.addEventListener(MouseEvent.MOUSE_MOVE, _onTopMove); | |
_barTop.addEventListener(MouseEvent.MOUSE_OUT, _onTopOut); | |
_cornerTopLeft.addEventListener(MouseEvent.MOUSE_DOWN, _onTopLeftDown); | |
_cornerTopLeft.addEventListener(MouseEvent.MOUSE_UP, _onTopLeftUp); | |
_cornerTopLeft.addEventListener(MouseEvent.MOUSE_MOVE, _onTopLeftOver); | |
_cornerTopLeft.addEventListener(MouseEvent.MOUSE_OUT, _onTopLeftOut); | |
_cornerTopRight.addEventListener(MouseEvent.MOUSE_DOWN, _onTopRightDown); | |
_cornerTopRight.addEventListener(MouseEvent.MOUSE_UP, _onTopRightUp); | |
_cornerTopRight.addEventListener(MouseEvent.MOUSE_MOVE, _onTopRightOver); | |
_cornerTopRight.addEventListener(MouseEvent.MOUSE_OUT, _onTopRightOut); | |
_topMoveBar.addEventListener(MouseEvent.MOUSE_DOWN, _onTopMoveDown); | |
_topMoveBar.addEventListener(MouseEvent.MOUSE_UP, _onTopMoveUp); | |
_topMoveBar.buttonMode = true; | |
_topMoveBar.useHandCursor = true; | |
*/ | |
} | |
public function updateLimits(xWidth:Number, yHeight:Number):void{ | |
_nativeWindowSizeWidth = xWidth; | |
_nativeWindowSizeHeight = yHeight; | |
} | |
public function setSize(x:Number, y:Number, width:Number, height:Number):void { | |
if (!_isInit) { | |
trace("Error: can't set size untill the ResizeWindow has been initialized"); | |
return; | |
} | |
//set up thresholds | |
_bg.x = x; | |
_bg.y = y; | |
_bg.width = width; | |
_bg.height = height; | |
_originalXBarBottom = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_originalYBarRight = _bg.y+_HITZONE_FRAME_THICKNESS; | |
_originalXBg = _bg.x; | |
_originalYBg = _bg.y; | |
//set up hit zones | |
//right hitzone | |
_barRight.y = _originalYBarRight; | |
_barRight.x = _bg.width+_bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_iconRight.visible = false; | |
_iconRight.x = _barRight.x; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0,0,_HITZONE_FRAME_THICKNESS,_bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barRight.graphics.endFill(); | |
//bottom hitzone | |
_barBottom.x = _originalXBarBottom; | |
_barBottom.y = _bg.height+_bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconBottom.visible = false; | |
_iconBottom.y = _barBottom.y; | |
_barBottom.graphics.clear(); | |
_barBottom.graphics.beginFill(0, _FRAME_ALPHA); | |
_barBottom.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barBottom.graphics.endFill(); | |
//left hit zone | |
_barLeft.y = _originalYBarRight; | |
_barLeft.x = _bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_iconLeft.visible = false; | |
_iconLeft.x = _bg.x; | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0,0,_HITZONE_FRAME_THICKNESS,_bg.height-(_barLeft.y - _bg.y)-_HITZONE_FRAME_THICKNESS); | |
_barLeft.graphics.endFill(); | |
//top hitzone | |
_barTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconTop.visible = false; | |
_iconTop.y = _barTop.y; | |
_barTop.graphics.clear(); | |
_barTop.graphics.beginFill(0, _FRAME_ALPHA); | |
_barTop.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barTop.graphics.endFill(); | |
//top drag bar hit zone | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_topMoveBar.graphics.clear(); | |
_topMoveBar.graphics.beginFill(0, _FRAME_ALPHA); | |
_topMoveBar.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS*2); | |
_topMoveBar.graphics.endFill(); | |
//set corners to the correct places | |
_cornerTopRight.x = _bg.x+_bg.width; | |
_cornerTopRight.y = _bg.y; | |
_cornerTopRight.alpha = _FRAME_ALPHA; | |
_cornerTopLeft.x = _bg.x; | |
_cornerTopLeft.y = _bg.y; | |
_cornerTopLeft.alpha = _FRAME_ALPHA; | |
_cornerBottomRight.x = _bg.x+_bg.width; | |
_cornerBottomRight.y = _bg.y+_bg.height; | |
_cornerBottomRight.alpha = _FRAME_ALPHA; | |
_cornerBottomLeft.x = _bg.x; | |
_cornerBottomLeft.y = _bg.y+_bg.height; | |
_cornerBottomLeft.alpha = _FRAME_ALPHA; | |
} | |
public function getWidth():Number{ | |
return _bg.width*_this.scaleX; | |
} | |
public function getHeight():Number{ | |
return _bg.height*_this.scaleY; | |
} | |
public function getX():Number{ | |
return _bg.x+_this.x; | |
} | |
public function getY():Number{ | |
return _bg.y+_this.y; | |
} | |
private function _init(e:Event = null):void{ | |
var rectangle:Rectangle; | |
var bottomRight:Point; | |
//make sure stage sizes have been updated | |
if (_this.stage.stageWidth == 0 && _this.stage.stageHeight == 0){ | |
return; | |
} | |
/* | |
//calculate container scale | |
var containerScale:Number = 1; | |
if (_nativeWindowSizeWidth < _this.root.stage.stageWidth && _nativeWindowSizeHeight > _this.root.stage.stageHeight){ | |
containerScale = (_nativeWindowSizeHeight/_this.root.stage.stageHeight); | |
} else if (_nativeWindowSizeWidth < _this.root.stage.stageWidth && _nativeWindowSizeHeight < _this.root.stage.stageHeight) { | |
containerScale = (_nativeWindowSizeWidth/_this.root.stage.stageWidth); | |
} else if (_nativeWindowSizeWidth < _this.root.stage.stageWidth && _nativeWindowSizeHeight < _this.root.stage.stageHeight){ | |
//whole square is bigger than original | |
if (_this.root.stage.stageWidth <= _this.root.stage.stageHeight){ | |
containerScale = (_this.root.stage.stageWidth/_nativeWindowSizeWidth); | |
} else { | |
containerScale = (_this.root.stage.stageHeight/_nativeWindowSizeHeight); | |
} | |
} else if (_nativeWindowSizeWidth > _this.root.stage.stageWidth && _nativeWindowSizeHeight > _this.root.stage.stageHeight){ | |
//whole square is less than original | |
if (_this.root.stage.stageWidth <= _this.root.stage.stageHeight){ | |
containerScale = (_this.root.stage.stageWidth/_nativeWindowSizeWidth); | |
} else { | |
containerScale = (_this.root.stage.stageHeight/_nativeWindowSizeHeight); | |
} | |
}*/ | |
if (_this.root.hasEventListener(Event.ENTER_FRAME)){ | |
_this.root.removeEventListener(Event.ENTER_FRAME, _init); | |
} | |
//get all the assets | |
//get resize cursors: | |
_iconTopLeft = _mysteryBox.iconTopLeft_mc | |
if (_iconTopLeft == null){ | |
trace("Error: asset iconTopLeft_mc not found in resize window"); | |
return; | |
} | |
_iconTopLeft.visible = false; | |
_iconTopRight = _mysteryBox.iconTopRight_mc | |
if (_iconTopRight == null){ | |
trace("Error: asset iconTopRight_mc not found in resize window"); | |
return; | |
} | |
_iconTopRight.visible = false; | |
_iconTop = _mysteryBox.iconTop_mc | |
if (_iconTop == null){ | |
trace("Error: asset iconTop_mc not found in resize window"); | |
return; | |
} | |
_iconTop.visible = false; | |
_iconBottomLeft = _mysteryBox.iconBottomLeft_mc | |
if (_iconBottomLeft == null){ | |
trace("Error: asset iconBottomLeft_mc not found in resize window"); | |
return; | |
} | |
_iconBottomLeft.visible = false; | |
_iconBottomRight = _mysteryBox.iconBottomRight_mc | |
if (_iconBottomRight == null){ | |
trace("Error: asset iconBottomRight_mc not found in resize window"); | |
return; | |
} | |
_iconBottomRight.visible = false; | |
_iconBottom = _mysteryBox.iconBottom_mc | |
if (_iconBottom == null){ | |
trace("Error: asset iconBottom_mc not found in resize window"); | |
return; | |
} | |
_iconBottom.visible = false; | |
_iconRight = _mysteryBox.iconRight_mc | |
if (_iconRight == null){ | |
trace("Error: asset iconRight_mc not found in resize window"); | |
return; | |
} | |
_iconRight.visible = false; | |
_iconLeft = _mysteryBox.iconLeft_mc | |
if (_iconLeft == null){ | |
trace("Error: asset iconLeft_mc not found in resize window"); | |
return; | |
} | |
_iconLeft.visible = false; | |
//get the resize hit zones | |
_barTop = _mysteryBox.barTop_mc | |
if (_barTop == null){ | |
trace("Error: asset barTop_mc not found in resize window"); | |
return; | |
} | |
_barBottom = _mysteryBox.barBottom_mc | |
if (_barBottom == null){ | |
trace("Error: asset barBottom_mc not found in resize window"); | |
return; | |
} | |
_barRight = _mysteryBox.barRight_mc | |
if (_barRight == null){ | |
trace("Error: asset barRight_mc not found in resize window"); | |
return; | |
} | |
_barLeft = _mysteryBox.barLeft_mc | |
if (_barLeft == null){ | |
trace("Error: asset barLeft_mc not found in resize window"); | |
return; | |
} | |
_cornerBottomLeft = _mysteryBox.cornerBottomLeft_mc | |
if (_cornerBottomLeft == null){ | |
trace("Error: asset cornerBottomLeft_mc not found in resize window"); | |
return; | |
} | |
_cornerTopLeft = _mysteryBox.cornerTopLeft_mc | |
if (_cornerTopLeft == null){ | |
trace("Error: asset cornerTopLeft_mc not found in resize window"); | |
return; | |
} | |
_cornerBottomRight = _mysteryBox.cornerBottomRight_mc | |
if (_cornerBottomRight == null){ | |
trace("Error: asset cornerBottomRight_mc not found in resize window"); | |
return; | |
} | |
_cornerTopRight = _mysteryBox.cornerTopRight_mc | |
if (_cornerTopRight == null){ | |
trace("Error: asset cornerTopRight_mc not found in resize window"); | |
return; | |
} | |
_topMoveBar = _mysteryBox.topMoveBar_mc | |
if (_topMoveBar == null){ | |
trace("Error: asset topMoveBar_mc not found in resize window"); | |
return; | |
} | |
//get background | |
_bg = _mysteryBox.bg_mc | |
if (_bg == null){ | |
trace("Error: asset bg_mc not found in resize window"); | |
return; | |
} | |
//set up thresholds | |
_originalXBarBottom = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_originalYBarRight = _bg.y+_HITZONE_FRAME_THICKNESS; | |
_originalXBg = _bg.x; | |
_originalYBg = _bg.y; | |
//set up hit zones | |
//right hitzone | |
_barRight.y = _originalYBarRight; | |
_barRight.x = _bg.width+_bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_iconRight.visible = false; | |
_iconRight.x = _barRight.x; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0,0,_HITZONE_FRAME_THICKNESS,_bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barRight.graphics.endFill(); | |
//bottom hitzone | |
_barBottom.x = _originalXBarBottom; | |
_barBottom.y = _bg.height+_bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconBottom.visible = false; | |
_iconBottom.y = _barBottom.y; | |
_barBottom.graphics.clear(); | |
_barBottom.graphics.beginFill(0, _FRAME_ALPHA); | |
_barBottom.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barBottom.graphics.endFill(); | |
//left hit zone | |
_barLeft.y = _originalYBarRight; | |
_barLeft.x = _bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_iconLeft.visible = false; | |
_iconLeft.x = _bg.x; | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0,0,_HITZONE_FRAME_THICKNESS,_bg.height-(_barLeft.y - _bg.y)-_HITZONE_FRAME_THICKNESS); | |
_barLeft.graphics.endFill(); | |
//top hitzone | |
_barTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconTop.visible = false; | |
_iconTop.y = _barTop.y; | |
_barTop.graphics.clear(); | |
_barTop.graphics.beginFill(0, _FRAME_ALPHA); | |
_barTop.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barTop.graphics.endFill(); | |
//top drag bar hit zone | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_topMoveBar.graphics.clear(); | |
_topMoveBar.graphics.beginFill(0, _FRAME_ALPHA); | |
_topMoveBar.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS*2); | |
_topMoveBar.graphics.endFill(); | |
//set corners to the correct places | |
_cornerTopRight.x = _bg.x+_bg.width; | |
_cornerTopRight.y = _bg.y; | |
_cornerTopRight.alpha = _FRAME_ALPHA; | |
_cornerTopLeft.x = _bg.x; | |
_cornerTopLeft.y = _bg.y; | |
_cornerTopLeft.alpha = _FRAME_ALPHA; | |
_cornerBottomRight.x = _bg.x+_bg.width; | |
_cornerBottomRight.y = _bg.y+_bg.height; | |
_cornerBottomRight.alpha = _FRAME_ALPHA; | |
_cornerBottomLeft.x = _bg.x; | |
_cornerBottomLeft.y = _bg.y+_bg.height; | |
_cornerBottomLeft.alpha = _FRAME_ALPHA; | |
//set listeners. | |
_barRight.addEventListener(MouseEvent.MOUSE_DOWN, _onRightDown); | |
_barRight.addEventListener(MouseEvent.MOUSE_UP, _onRightUp); | |
_barRight.addEventListener(MouseEvent.MOUSE_MOVE, _onRightMove); | |
_barRight.addEventListener(MouseEvent.MOUSE_OUT, _onRightOut); | |
_barBottom.addEventListener(MouseEvent.MOUSE_DOWN, _onBottomDown); | |
_barBottom.addEventListener(MouseEvent.MOUSE_UP, _onBottomUp); | |
_barBottom.addEventListener(MouseEvent.MOUSE_MOVE, _onBottomMove); | |
_barBottom.addEventListener(MouseEvent.MOUSE_OUT, _onBottomOut); | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_DOWN, _onBottomRightDown); | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_UP, _onBottomRightUp); | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_MOVE, _onBottomRightOver); | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_OUT, _onBottomRightOut); | |
_barLeft.addEventListener(MouseEvent.MOUSE_DOWN, _onLeftDown); | |
_barLeft.addEventListener(MouseEvent.MOUSE_UP, _onLeftUp); | |
_barLeft.addEventListener(MouseEvent.MOUSE_MOVE, _onLeftMove); | |
_barLeft.addEventListener(MouseEvent.MOUSE_OUT, _onLeftOut); | |
_cornerBottomLeft.addEventListener(MouseEvent.MOUSE_DOWN, _onBottomLeftDown); | |
_cornerBottomLeft.addEventListener(MouseEvent.MOUSE_UP, _onBottomLeftUp); | |
_cornerBottomLeft.addEventListener(MouseEvent.MOUSE_MOVE, _onBottomLeftOver); | |
_cornerBottomLeft.addEventListener(MouseEvent.MOUSE_OUT, _onBottomLeftOut); | |
_barTop.addEventListener(MouseEvent.MOUSE_DOWN, _onTopDown); | |
_barTop.addEventListener(MouseEvent.MOUSE_UP, _onTopUp); | |
_barTop.addEventListener(MouseEvent.MOUSE_MOVE, _onTopMove); | |
_barTop.addEventListener(MouseEvent.MOUSE_OUT, _onTopOut); | |
_cornerTopLeft.addEventListener(MouseEvent.MOUSE_DOWN, _onTopLeftDown); | |
_cornerTopLeft.addEventListener(MouseEvent.MOUSE_UP, _onTopLeftUp); | |
_cornerTopLeft.addEventListener(MouseEvent.MOUSE_MOVE, _onTopLeftOver); | |
_cornerTopLeft.addEventListener(MouseEvent.MOUSE_OUT, _onTopLeftOut); | |
_cornerTopRight.addEventListener(MouseEvent.MOUSE_DOWN, _onTopRightDown); | |
_cornerTopRight.addEventListener(MouseEvent.MOUSE_UP, _onTopRightUp); | |
_cornerTopRight.addEventListener(MouseEvent.MOUSE_MOVE, _onTopRightOver); | |
_cornerTopRight.addEventListener(MouseEvent.MOUSE_OUT, _onTopRightOut); | |
_topMoveBar.addEventListener(MouseEvent.MOUSE_DOWN, _onTopMoveDown); | |
_topMoveBar.addEventListener(MouseEvent.MOUSE_UP, _onTopMoveUp); | |
_topMoveBar.buttonMode = true; | |
_topMoveBar.useHandCursor = true; | |
_this.visible = true; | |
_this.alpha = 1; | |
_isInit = true; | |
} | |
/*********************Right HitZone***************************/ | |
private function _onRightDown(e:MouseEvent):void{ | |
_iconRight.visible = true; | |
_iconRight.y = e.localY+e.currentTarget.y; | |
_iconRight.x = _barRight.x; | |
_barTop.visible = false; | |
_barLeft.visible = false; | |
_barBottom.visible = false; _topMoveBar.visible=false; | |
_cornerBottomLeft.visible = false; | |
_cornerBottomRight.visible = false; | |
_cornerTopLeft.visible = false; | |
_cornerTopRight.visible = false; | |
_barRight.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseRightMoveHandler); | |
_barRight.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onRightLeavesMovie); | |
_barRight.startDrag(); | |
} | |
private function _onRightLeavesMovie(e:Event){ | |
_onRightUp(); | |
} | |
private function _mouseRightMoveHandler(e:MouseEvent = null):void { | |
var newWidth:Number; | |
var limitedCoords:Point; | |
//check to make sure this is not out of bounds | |
limitedCoords = _keepInBounds(_barRight.x,_barRight.y); | |
newWidth = limitedCoords.x-_bg.x+(_HITZONE_FRAME_THICKNESS/2); | |
if (newWidth > _minWidth ){ | |
_bg.width = newWidth; | |
_iconRight.x = _bg.x+_bg.width; | |
} | |
_cornerBottomRight.x = _iconRight.x; | |
_cornerTopRight.x = _iconRight.x; | |
_barBottom.graphics.clear(); | |
_barBottom.graphics.beginFill(0, _FRAME_ALPHA); | |
_barBottom.graphics.drawRect(0, 0, _bg.width-(_barBottom.x - _bg.x)-_HITZONE_FRAME_THICKNESS, _HITZONE_FRAME_THICKNESS); | |
_barBottom.graphics.endFill(); | |
_barTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconTop.visible = false; | |
_iconTop.y = _barTop.y; | |
_barTop.graphics.clear(); | |
_barTop.graphics.beginFill(0, _FRAME_ALPHA); | |
_barTop.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barTop.graphics.endFill(); | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_topMoveBar.graphics.clear(); | |
_topMoveBar.graphics.beginFill(0, _FRAME_ALPHA); | |
_topMoveBar.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS*2); | |
_topMoveBar.graphics.endFill(); | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onRightMove(e:MouseEvent):void{ | |
var newY:Number; | |
newY = e.localY+e.currentTarget.y; | |
_iconRight.visible = true; | |
if (newY > _bg.y+_HITZONE_FRAME_THICKNESS && newY < _bg.height+_bg.y-_HITZONE_FRAME_THICKNESS){ | |
_iconRight.y = newY; | |
} | |
_iconRight.x = _bg.x+_bg.width; | |
} | |
private function _onRightOut(e:MouseEvent):void{ | |
_iconRight.visible = false; | |
} | |
private function _onRightUp(e:MouseEvent = null):void{ | |
_mouseRightMoveHandler(); | |
_barTop.visible = true; | |
_barLeft.visible = true; | |
_barBottom.visible = true; _topMoveBar.visible=true; | |
_cornerBottomLeft.visible = true; | |
_cornerBottomRight.visible = true; | |
_cornerTopLeft.visible = true; | |
_cornerTopRight.visible = true; | |
_barRight.y = _bg.y+_HITZONE_FRAME_THICKNESS; | |
_barRight.x = _bg.x+_bg.width-(_HITZONE_FRAME_THICKNESS/2); | |
_barRight.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseRightMoveHandler); | |
_barRight.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onRightLeavesMovie); | |
_barRight.stopDrag(); | |
} | |
/*********************Bottom HitZone***************************/ | |
private function _onBottomDown(e:MouseEvent):void{ | |
_iconBottom.visible = true; | |
_iconBottom.y = _barBottom.y; | |
_barRight.visible = false; | |
_barTop.visible = false; | |
_barLeft.visible = false; | |
_cornerBottomLeft.visible = false; | |
_cornerBottomRight.visible = false; | |
_cornerTopLeft.visible = false; | |
_cornerTopRight.visible = false; | |
_topMoveBar.visible = false; | |
_cornerBottomRight.removeEventListener(MouseEvent.MOUSE_MOVE, _onBottomRightOver); | |
_barRight.removeEventListener(MouseEvent.MOUSE_MOVE, _onRightMove); | |
_barBottom.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseBottomMoveHandler); | |
_barBottom.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onBottomLeavesMovie); | |
_barBottom.startDrag(); | |
} | |
private function _onBottomLeavesMovie(e:Event){ | |
_onBottomUp(); | |
} | |
private function _mouseBottomMoveHandler(e:MouseEvent = null):void { | |
var newHeight:Number; | |
var limitedCoords:Point; | |
//check to make sure this is not out of bounds | |
limitedCoords = _keepInBounds(_barBottom.x,_barBottom.y); | |
newHeight = limitedCoords.y-_bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
if (newHeight > _minHeight ){ | |
_bg.height = newHeight; | |
} else { | |
_bg.height = _minHeight; | |
} | |
_iconBottom.y = _bg.y+_bg.height; | |
_cornerBottomRight.y = _iconBottom.y; | |
_cornerBottomLeft.y = _iconBottom.y; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0,0,_HITZONE_FRAME_THICKNESS,_bg.height-(_barRight.y - _bg.y)-_HITZONE_FRAME_THICKNESS); | |
_barRight.graphics.endFill(); | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barLeft.graphics.endFill(); | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onBottomMove(e:MouseEvent):void{ | |
var newX:Number; | |
newX = e.localX+e.currentTarget.x; | |
if (newX > _bg.x+_HITZONE_FRAME_THICKNESS && newX < _bg.width+_bg.x-_HITZONE_FRAME_THICKNESS){ | |
_iconBottom.x = newX; | |
_iconBottom.visible = true; | |
} else if (newX > _bg.width+_bg.x-_HITZONE_FRAME_THICKNESS) { | |
_iconBottom.x = _bg.x+_bg.width-_HITZONE_FRAME_THICKNESS; | |
_iconBottom.visible = true; | |
} else if (newX < _bg.x+_HITZONE_FRAME_THICKNESS){ | |
_iconBottom.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_iconBottom.visible = true; | |
} | |
_iconBottom.y = _bg.y+_bg.height; | |
} | |
private function _onBottomOut(e:MouseEvent):void{ | |
_iconBottom.visible = false; | |
} | |
private function _onBottomUp(e:MouseEvent = null):void{ | |
_mouseBottomMoveHandler(); | |
_iconBottom.visible = false; | |
_barBottom.y = _bg.height+_bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_barBottom.x = _bg.x+(_HITZONE_FRAME_THICKNESS); | |
_iconBottom.y = _barBottom.y; | |
_cornerBottomRight.y = _bg.y+_bg.height; | |
_cornerBottomLeft.y = _bg.y+_bg.height; | |
_barRight.visible = true; | |
_barTop.visible = true; _topMoveBar.visible=true; | |
_barLeft.visible = true; | |
_cornerBottomLeft.visible = true; | |
_cornerBottomRight.visible = true; | |
_cornerTopLeft.visible = true; | |
_cornerTopRight.visible = true; | |
_topMoveBar.visible = true; | |
_cornerBottomRight.addEventListener(MouseEvent.MOUSE_MOVE, _onBottomRightOver); | |
_barRight.addEventListener(MouseEvent.MOUSE_MOVE, _onRightMove); | |
_barBottom.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseBottomMoveHandler); | |
_barBottom.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onBottomLeavesMovie); | |
_barBottom.stopDrag(); | |
} | |
/*********************Bottom Right Corner HitZone***************************/ | |
private function _onBottomRightDown(e:MouseEvent):void{ | |
_iconBottomRight.x = _cornerBottomRight.x; | |
_iconBottomRight.y = _cornerBottomRight.y; | |
_barBottom.visible = false; _topMoveBar.visible=false; | |
_barRight.visible = false; | |
_barTop.visible = false; | |
_barLeft.visible = false; | |
_cornerBottomLeft.visible = false; | |
_cornerTopLeft.visible = false; | |
_cornerTopRight.visible = false; | |
_cornerBottomRight.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseBottomRightMoveHandler); | |
_cornerBottomRight.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onBottomRightLeavesMovie); | |
_cornerBottomRight.startDrag(); | |
} | |
private function _onBottomRightUp(e:MouseEvent = null):void{ | |
_mouseBottomRightMoveHandler(); | |
_barRight.x = _bg.width+_bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_iconRight.y = _cornerBottomRight.y; | |
_barRight.x = _bg.width+_bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_iconRight.x = _cornerBottomRight.x; | |
_iconBottomRight.x = _bg.width+_bg.x; | |
_iconBottomRight.y = _bg.height+_bg.y; | |
_barTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconTop.visible = false; | |
_iconTop.y = _barTop.y; | |
_cornerBottomRight.x = _bg.width+_bg.x; | |
_cornerBottomRight.y = _bg.height+_bg.y; | |
_cornerBottomLeft.y = _cornerBottomRight.y; | |
_cornerBottomLeft.x = _bg.x; | |
_cornerTopRight.x = _bg.x+_bg.width; | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_iconRight.x = _cornerBottomRight.x; | |
_iconBottom.y = _cornerBottomRight.y; | |
_barBottom.visible = true; _topMoveBar.visible=true; | |
_barRight.visible = true; | |
_barTop.visible = true; | |
_barLeft.visible = true; | |
_cornerBottomLeft.visible = true; | |
_cornerTopLeft.visible = true; | |
_cornerTopRight.visible = true; | |
_cornerBottomRight.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseBottomRightMoveHandler); | |
_cornerBottomRight.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onBottomRightLeavesMovie); | |
_cornerBottomRight.stopDrag(); | |
} | |
private function _mouseBottomRightMoveHandler(e:MouseEvent = null):void{ | |
var newHeight:Number; | |
var newWidth:Number; | |
var limitedCoords:Point; | |
//check to make sure this is not out of bounds | |
limitedCoords = _keepInBounds(_cornerBottomRight.x,_cornerBottomRight.y); | |
newHeight = limitedCoords.y-_bg.y; | |
if (newHeight > _minHeight ){ | |
_bg.height = newHeight; | |
} else { | |
_bg.height = _minHeight; | |
} | |
_barBottom.y = _bg.height+_bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
newWidth = limitedCoords.x-_bg.x; | |
if (newWidth > _minWidth ){ | |
_bg.width = newWidth; | |
} else { | |
_bg.width = _minWidth; | |
} | |
_barRight.x = _bg.width+_bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_iconRight.y = limitedCoords.y; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barRight.graphics.endFill(); | |
_iconRight.x = limitedCoords.x; | |
_iconBottom.y = limitedCoords.y; | |
_barBottom.graphics.clear(); | |
_barBottom.graphics.beginFill(0, _FRAME_ALPHA); | |
_barBottom.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barBottom.graphics.endFill(); | |
_barTop.graphics.clear(); | |
_barTop.graphics.beginFill(0, _FRAME_ALPHA); | |
_barTop.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barTop.graphics.endFill(); | |
_iconBottomRight.x = _bg.width+_bg.x; | |
_iconBottomRight.y = _bg.height+_bg.y; | |
_cornerBottomLeft.y = limitedCoords.y; | |
_cornerBottomLeft.x = _bg.x; | |
_cornerTopRight.x = _bg.x+_bg.width; | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barLeft.graphics.endFill(); | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_topMoveBar.graphics.clear(); | |
_topMoveBar.graphics.beginFill(0, _FRAME_ALPHA); | |
_topMoveBar.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS*2); | |
_topMoveBar.graphics.endFill(); | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onBottomRightLeavesMovie(e:Event):void{ | |
_onBottomRightUp(); | |
} | |
private function _onBottomRightOver(e:MouseEvent):void{ | |
_iconBottomRight.x = _cornerBottomRight.x; | |
_iconBottomRight.y = _cornerBottomRight.y; | |
_iconBottomRight.visible = true; | |
} | |
private function _onBottomRightOut(e:MouseEvent):void{ | |
_iconBottomRight.x = _cornerBottomRight.x; | |
_iconBottomRight.y = _cornerBottomRight.y; | |
_iconBottomRight.visible = false; | |
} | |
/*********************Left HitZone***************************/ | |
private function _onLeftDown(e:MouseEvent):void{ | |
_originalXBg = _bg.x; | |
_originalYBg = _bg.y; | |
_barTop.visible = false; | |
_barRight.visible = false; | |
_barBottom.visible = false; _topMoveBar.visible=false; | |
_cornerBottomLeft.visible = false; | |
_cornerBottomRight.visible = false; | |
_cornerTopLeft.visible = false; | |
_cornerTopRight.visible = false; | |
_barLeft.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseLeftMoveHandler); | |
_barLeft.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onLeftLeavesMovie); | |
_barLeft.startDrag(); | |
} | |
private function _onLeftLeavesMovie(e:Event){ | |
_onLeftUp(); | |
} | |
private function _mouseLeftMoveHandler(e:MouseEvent = null):void { | |
var newWidth:Number; | |
var limitedCoords:Point; | |
//check to make sure this is not out of bounds | |
limitedCoords = _keepInBounds(_barLeft.x,_barLeft.y); | |
var distanceMoved:Number = (limitedCoords.x-_bg.x+(_HITZONE_FRAME_THICKNESS/2)); | |
newWidth = _bg.width-distanceMoved; | |
if (newWidth > _minWidth ){ | |
_bg.width = newWidth; | |
_bg.x = _bg.x+distanceMoved; | |
_iconLeft.x = _bg.x; | |
} else { | |
distanceMoved = _bg.width-_minWidth; | |
_bg.width = _minWidth; | |
_bg.x = _bg.x+distanceMoved; | |
_iconLeft.x = _bg.x; | |
} | |
_cornerBottomLeft.x = _bg.x; | |
_cornerBottomLeft.y = _bg.y+_bg.height; | |
_cornerTopLeft.x = _bg.x; | |
_cornerTopLeft.y = _bg.y; | |
_barBottom.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barBottom.graphics.clear(); | |
_barBottom.graphics.beginFill(0, _FRAME_ALPHA); | |
_barBottom.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barBottom.graphics.endFill(); | |
_barTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconTop.visible = false; | |
_iconTop.y = _barTop.y; | |
_barTop.graphics.clear(); | |
_barTop.graphics.beginFill(0, _FRAME_ALPHA); | |
_barTop.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barTop.graphics.endFill(); | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_topMoveBar.graphics.clear(); | |
_topMoveBar.graphics.beginFill(0, _FRAME_ALPHA); | |
_topMoveBar.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS*2); | |
_topMoveBar.graphics.endFill(); | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onLeftMove(e:MouseEvent):void{ | |
var newY:Number; | |
newY = e.localY+e.currentTarget.y; | |
_iconLeft.visible = true; | |
_iconLeft.x = _bg.x; | |
if (newY > _bg.y+_HITZONE_FRAME_THICKNESS && newY < _bg.height+_bg.y-_HITZONE_FRAME_THICKNESS){ | |
_iconLeft.y = newY; | |
} | |
} | |
private function _onLeftOut(e:MouseEvent):void{ | |
_iconLeft.visible = false; | |
} | |
private function _onLeftUp(e:MouseEvent = null):void{ | |
_mouseLeftMoveHandler(); | |
_barLeft.x = _bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_barLeft.y = _bg.y+(_HITZONE_FRAME_THICKNESS); | |
_originalXBg = _bg.x; | |
_originalYBg = _bg.y; | |
_barTop.visible = true; | |
_barRight.visible = true; | |
_barBottom.visible = true; _topMoveBar.visible=true; | |
_cornerBottomLeft.visible = true; | |
_cornerBottomRight.visible = true; | |
_cornerTopLeft.visible = true; | |
_cornerTopRight.visible = true; | |
_barLeft.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseLeftMoveHandler); | |
_barLeft.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onLeftLeavesMovie); | |
_barLeft.stopDrag(); | |
} | |
/*********************Bottom Left Corner HitZone***************************/ | |
private function _onBottomLeftDown(e:MouseEvent):void{ | |
_iconBottomLeft.x = _cornerBottomLeft.x; | |
_iconBottomLeft.y = _cornerBottomLeft.y; | |
_iconBottomLeft.visible = true; | |
_barBottom.visible = false; _topMoveBar.visible=false; | |
_barRight.visible = false; | |
_barTop.visible = false; | |
_barLeft.visible = false; | |
_cornerBottomRight.visible = false; | |
_cornerTopLeft.visible = false; | |
_cornerTopRight.visible = false; | |
_cornerBottomLeft.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseBottomLeftMoveHandler); | |
_cornerBottomLeft.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onBottomLeftLeavesMovie); | |
_cornerBottomLeft.startDrag(); | |
} | |
private function _onBottomLeftUp(e:MouseEvent = null):void{ | |
_mouseBottomLeftMoveHandler(); | |
_cornerBottomLeft.y = _bg.y+_bg.height; | |
_cornerBottomLeft.x = _bg.x; | |
_barBottom.visible = true; _topMoveBar.visible=true; | |
_barRight.visible = true; | |
_barTop.visible = true; | |
_barLeft.visible = true; | |
_cornerBottomRight.visible = true; | |
_cornerTopLeft.visible = true; | |
_cornerTopRight.visible = true; | |
_cornerBottomLeft.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseBottomLeftMoveHandler); | |
_cornerBottomLeft.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onBottomLeftLeavesMovie); | |
_cornerBottomLeft.stopDrag(); | |
} | |
private function _mouseBottomLeftMoveHandler(e:MouseEvent = null):void{ | |
var newHeight:Number; | |
var newWidth:Number; | |
var distanceMovedOnX:Number; | |
var limitedCoords:Point; | |
//check to make sure this is not out of bounds | |
limitedCoords = _keepInBounds(_cornerBottomLeft.x,_cornerBottomLeft.y); | |
newHeight = limitedCoords.y-_bg.y; | |
if (newHeight > _minHeight ){ | |
_bg.height = newHeight; | |
} else { | |
_bg.height = _minHeight; | |
} | |
_barBottom.y = _bg.height+_bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconBottomLeft.y = _bg.y+_bg.height; | |
distanceMovedOnX = (limitedCoords.x-_bg.x); | |
newWidth = _bg.width-distanceMovedOnX; | |
if (newWidth > _minWidth ){ | |
_bg.width = newWidth; | |
_bg.x = _bg.x+distanceMovedOnX; | |
} else { | |
distanceMovedOnX = _bg.width-_minWidth; | |
_bg.width = _minWidth; | |
_bg.x = _bg.x+distanceMovedOnX; | |
} | |
_iconBottomLeft.x = _bg.x; | |
_iconTopLeft.x = _bg.x; | |
_cornerTopLeft.x = _bg.x; | |
_barLeft.x = _bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_barBottom.x = _bg.x+(_HITZONE_FRAME_THICKNESS); | |
_iconLeft.y = limitedCoords.y; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barRight.graphics.endFill(); | |
_iconRight.x = limitedCoords.x; | |
_iconBottom.y = limitedCoords.y; | |
_barBottom.graphics.clear(); | |
_barBottom.graphics.beginFill(0, _FRAME_ALPHA); | |
_barBottom.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barBottom.graphics.endFill(); | |
_cornerBottomRight.y = _bg.y+_bg.height; | |
_cornerBottomRight.x = _bg.x+_bg.width; | |
_cornerTopRight.x = _bg.x+_bg.width; | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barLeft.graphics.endFill(); | |
_barTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconTop.visible = false; | |
_iconTop.y = _barTop.y; | |
_barTop.graphics.clear(); | |
_barTop.graphics.beginFill(0, _FRAME_ALPHA); | |
_barTop.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barTop.graphics.endFill(); | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_topMoveBar.graphics.clear(); | |
_topMoveBar.graphics.beginFill(0, _FRAME_ALPHA); | |
_topMoveBar.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS*2); | |
_topMoveBar.graphics.endFill(); | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onBottomLeftLeavesMovie(e:Event):void{ | |
_onBottomLeftUp(); | |
} | |
private function _onBottomLeftOver(e:MouseEvent):void{ | |
_iconBottomLeft.x = _cornerBottomLeft.x; | |
_iconBottomLeft.y = _cornerBottomLeft.y; | |
_iconBottomLeft.visible = true; | |
} | |
private function _onBottomLeftOut(e:MouseEvent):void{ | |
_iconBottomLeft.x = _cornerBottomLeft.x; | |
_iconBottomLeft.y = _cornerBottomLeft.y; | |
_iconBottomLeft.visible = false; | |
} | |
/*********************Top HitZone***************************/ | |
private function _onTopDown(e:MouseEvent):void{ | |
_iconTop.visible = true; | |
_iconTop.y = _barTop.y; | |
_barRight.visible = false; | |
_barBottom.visible = false; _topMoveBar.visible=false; | |
_barLeft.visible = false; | |
_cornerTopLeft.visible = false; | |
_cornerTopRight.visible = false; | |
_cornerBottomLeft.visible = false; | |
_cornerBottomRight.visible = false; | |
_barTop.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseTopMoveHandler); | |
_barTop.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onTopLeavesMovie); | |
_barTop.startDrag(); | |
} | |
private function _onTopLeavesMovie(e:Event){ | |
_onTopUp(); | |
} | |
private function _mouseTopMoveHandler(e:MouseEvent = null):void { | |
var newHeight:Number; | |
var distanceMovedOnY:Number; | |
var limitedCoords:Point; | |
//check to make sure this is not out of bounds | |
limitedCoords = _keepInBounds(_barTop.x,_barTop.y); | |
distanceMovedOnY = (limitedCoords.y-_bg.y)+(_HITZONE_FRAME_THICKNESS/2); | |
newHeight = _bg.height-distanceMovedOnY; | |
if (newHeight > _minHeight ){ | |
_bg.height = newHeight; | |
_bg.y = _bg.y+distanceMovedOnY; | |
} else { | |
distanceMovedOnY = _bg.height-_minHeight; | |
_bg.height = _minHeight; | |
_bg.y = _bg.y+distanceMovedOnY; | |
} | |
_iconTop.y = _bg.y; | |
_cornerTopRight.y = _iconTop.y; | |
_cornerTopLeft.y = _iconTop.y; | |
_barRight.y = _iconTop.y+_HITZONE_FRAME_THICKNESS; | |
_barLeft.y = _iconTop.y+_HITZONE_FRAME_THICKNESS; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0,0,_HITZONE_FRAME_THICKNESS,_bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barRight.graphics.endFill(); | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barLeft.graphics.endFill(); | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onTopMove(e:MouseEvent):void{ | |
var newX:Number; | |
newX = e.localX+e.currentTarget.x; | |
if (newX > _bg.x+_HITZONE_FRAME_THICKNESS && newX < _bg.width+_bg.x-_HITZONE_FRAME_THICKNESS){ | |
_iconTop.x = newX; | |
_iconTop.visible = true; | |
} else if (newX > _bg.width+_bg.x-_HITZONE_FRAME_THICKNESS) { | |
_iconTop.x = _bg.x+_bg.width-_HITZONE_FRAME_THICKNESS; | |
_iconTop.visible = true; | |
} else if (newX < _bg.x+_HITZONE_FRAME_THICKNESS){ | |
_iconTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_iconTop.visible = true; | |
} | |
} | |
private function _onTopOut(e:MouseEvent):void{ | |
_iconTop.visible = false; | |
} | |
private function _onTopUp(e:MouseEvent = null):void{ | |
var newHeight:Number; | |
_iconTop.visible = false; | |
_mouseTopMoveHandler(); | |
_barTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconTop.y = _barTop.y; | |
_cornerBottomRight.y = _bg.y+_bg.height; | |
_cornerBottomLeft.y = _bg.y+_bg.height; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0,0,_HITZONE_FRAME_THICKNESS,_bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barRight.graphics.endFill(); | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barLeft.graphics.endFill(); | |
_barRight.visible = true; | |
_barBottom.visible = true; _topMoveBar.visible=true; | |
_barLeft.visible = true; | |
_cornerTopLeft.visible = true; | |
_cornerTopRight.visible = true; | |
_cornerBottomLeft.visible = true; | |
_cornerBottomRight.visible = true; | |
_barTop.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseTopMoveHandler); | |
_barTop.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onTopLeavesMovie); | |
_barTop.stopDrag(); | |
_checkBounds(); | |
} | |
/*********************Top Left Corner HitZone***************************/ | |
private function _onTopLeftDown(e:MouseEvent):void{ | |
_iconTopLeft.x = _cornerTopLeft.x; | |
_iconTopLeft.y = _cornerTopLeft.y; | |
_iconTopLeft.visible = true; | |
_barBottom.visible = false; _topMoveBar.visible=false; | |
_barRight.visible = false; | |
_barTop.visible = false; | |
_barLeft.visible = false; | |
_cornerBottomRight.visible = false; | |
_cornerBottomLeft.visible = false; | |
_cornerTopRight.visible = false; | |
_cornerTopLeft.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseTopLeftMoveHandler); | |
_cornerTopLeft.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onTopLeftLeavesMovie); | |
_cornerTopLeft.startDrag(); | |
} | |
private function _onTopLeftUp(e:MouseEvent = null):void{ | |
_mouseTopLeftMoveHandler(); | |
_cornerTopLeft.y = _bg.y; | |
_cornerTopLeft.x = _bg.x; | |
_iconTopLeft.visible = false; | |
_barBottom.visible = true; _topMoveBar.visible=true; | |
_barRight.visible = true; | |
_barTop.visible = true; | |
_barLeft.visible = true; | |
_cornerBottomRight.visible = true; | |
_cornerBottomLeft.visible = true; | |
_cornerTopRight.visible = true; | |
_cornerTopLeft.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseTopLeftMoveHandler); | |
_cornerTopLeft.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onTopLeftLeavesMovie); | |
_cornerTopLeft.stopDrag(); | |
_checkBounds(); | |
} | |
private function _mouseTopLeftMoveHandler(e:MouseEvent = null):void{ | |
var newHeight:Number; | |
var newWidth:Number; | |
var distanceMovedOnX:Number; | |
var distanceMovedOnY:Number; | |
var limitedCoords:Point; | |
//check to make sure this is not out of bounds | |
limitedCoords = _keepInBounds(_cornerTopLeft.x,_cornerTopLeft.y); | |
distanceMovedOnY = (limitedCoords.y-_bg.y); | |
newHeight = _bg.height-distanceMovedOnY; | |
if (newHeight > _minHeight ){ | |
_bg.height = newHeight; | |
_bg.y = _bg.y+distanceMovedOnY; | |
} else { | |
distanceMovedOnY = _bg.height-_minHeight; | |
_bg.height = _minHeight; | |
_bg.y = _bg.y+distanceMovedOnY; | |
} | |
_barTop.y = _bg.height+_bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_iconTopLeft.y = _bg.y; | |
distanceMovedOnX = (limitedCoords.x-_bg.x); | |
newWidth = _bg.width-distanceMovedOnX; | |
if (newWidth > _minWidth ){ | |
_bg.width = newWidth; | |
_bg.x = _bg.x+distanceMovedOnX; | |
} else { | |
distanceMovedOnX = _bg.width-_minWidth; | |
_bg.width = _minWidth; | |
_bg.x = _bg.x+distanceMovedOnX; | |
} | |
_iconTopLeft.x = _bg.x; | |
_iconBottomLeft.x = _bg.x; | |
_cornerBottomLeft.x = _bg.x; | |
_barLeft.x = _bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_barLeft.y = _bg.y+(_HITZONE_FRAME_THICKNESS); | |
_barRight.y = _bg.y+(_HITZONE_FRAME_THICKNESS); | |
_barBottom.x = _bg.x+(_HITZONE_FRAME_THICKNESS); | |
_iconLeft.y = _cornerTopLeft.y; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barRight.graphics.endFill(); | |
_iconRight.x = limitedCoords.x; | |
_iconBottom.y = limitedCoords.y; | |
_barBottom.graphics.clear(); | |
_barBottom.graphics.beginFill(0, _FRAME_ALPHA); | |
_barBottom.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barBottom.graphics.endFill(); | |
_cornerBottomRight.y = _bg.y+_bg.height; | |
_cornerBottomRight.x = _bg.x+_bg.width; | |
_cornerTopRight.x = _bg.x+_bg.width; | |
_cornerTopRight.y = _bg.y; | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barLeft.graphics.endFill(); | |
_barTop.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
_iconTop.visible = false; | |
_iconTop.y = _barTop.y; | |
_barTop.graphics.clear(); | |
_barTop.graphics.beginFill(0, _FRAME_ALPHA); | |
_barTop.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barTop.graphics.endFill(); | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_topMoveBar.graphics.clear(); | |
_topMoveBar.graphics.beginFill(0, _FRAME_ALPHA); | |
_topMoveBar.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS*2); | |
_topMoveBar.graphics.endFill(); | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onTopLeftLeavesMovie(e:Event):void{ | |
_onTopLeftUp(); | |
} | |
private function _onTopLeftOver(e:MouseEvent):void{ | |
_iconTopLeft.x = _cornerTopLeft.x; | |
_iconTopLeft.y = _cornerTopLeft.y; | |
_iconTopLeft.visible = true; | |
} | |
private function _onTopLeftOut(e:MouseEvent):void{ | |
_iconTopLeft.x = _cornerTopLeft.x; | |
_iconTopLeft.y = _cornerTopLeft.y; | |
_iconTopLeft.visible = false; | |
} | |
/*********************Top Right Corner HitZone***************************/ | |
private function _onTopRightDown(e:MouseEvent):void{ | |
_iconTopRight.x = _cornerTopRight.x; | |
_iconTopRight.y = _cornerTopRight.y; | |
_barBottom.visible = false; _topMoveBar.visible=false; | |
_barRight.visible = false; | |
_barTop.visible = false; | |
_barLeft.visible = false; | |
_cornerBottomLeft.visible = false; | |
_cornerTopLeft.visible = false; | |
_cornerBottomRight.visible = false; | |
_cornerTopRight.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseTopRightMoveHandler); | |
_cornerTopRight.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onTopRightLeavesMovie); | |
_cornerTopRight.startDrag(); | |
} | |
private function _onTopRightUp(e:MouseEvent = null):void{ | |
_mouseTopRightMoveHandler(); | |
_iconRight.x = _cornerTopRight.x; | |
_iconTop.y = _cornerTopRight.y; | |
_cornerTopRight.y = _bg.y; | |
_cornerTopRight.x = _bg.x+_bg.width; | |
_barBottom.y = _bg.y+_bg.height-(_HITZONE_FRAME_THICKNESS/2); | |
_cornerBottomRight.y = _bg.y+_bg.height; | |
_cornerBottomLeft.y = _bg.y+_bg.height; | |
_barBottom.visible = true; _topMoveBar.visible=true; | |
_barRight.visible = true; | |
_barTop.visible = true; | |
_barLeft.visible = true; | |
_cornerBottomLeft.visible = true; | |
_cornerTopLeft.visible = true; | |
_cornerBottomRight.visible = true; | |
_cornerTopRight.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseTopRightMoveHandler); | |
_cornerTopRight.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onTopRightLeavesMovie); | |
_cornerTopRight.stopDrag(); | |
_checkBounds(); | |
} | |
private function _mouseTopRightMoveHandler(e:MouseEvent = null):void{ | |
var newHeight:Number; | |
var newWidth:Number; | |
var distanceMovedOnX:Number; | |
var distanceMovedOnY:Number; | |
var limitedCoords:Point; | |
//check to make sure this is not out of bounds | |
limitedCoords = _keepInBounds(_cornerTopRight.x,_cornerTopRight.y); | |
distanceMovedOnY = limitedCoords.y-_bg.y; | |
newHeight = _bg.height-distanceMovedOnY; | |
if (newHeight > _minHeight ){ | |
_bg.height = newHeight; | |
_bg.y = limitedCoords.y; | |
} else { | |
_bg.y = _bg.y-(_bg.height-_minHeight); | |
_bg.height = _minHeight; | |
} | |
_barTop.y = _bg.y-(_HITZONE_FRAME_THICKNESS/2); | |
newWidth = limitedCoords.x-_bg.x; | |
if (newWidth > _minWidth ){ | |
_bg.width = newWidth; | |
} else { | |
_bg.width = _minWidth; | |
} | |
_barRight.y = _bg.y+_HITZONE_FRAME_THICKNESS; | |
_barRight.x = _bg.width+_bg.x-(_HITZONE_FRAME_THICKNESS/2); | |
_iconRight.y = _bg.y; | |
_barRight.graphics.clear(); | |
_barRight.graphics.beginFill(0, _FRAME_ALPHA); | |
_barRight.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barRight.graphics.endFill(); | |
_iconRight.x = _bg.x+_bg.width; | |
_iconTop.y = _bg.y; | |
_barBottom.graphics.clear(); | |
_barBottom.graphics.beginFill(0, _FRAME_ALPHA); | |
_barBottom.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barBottom.graphics.endFill(); | |
_barTop.graphics.clear(); | |
_barTop.graphics.beginFill(0, _FRAME_ALPHA); | |
_barTop.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS); | |
_barTop.graphics.endFill(); | |
_iconTopRight.x = _bg.width+_bg.x; | |
_iconTopRight.y = _bg.y; | |
_cornerTopLeft.y = _bg.y; | |
_cornerBottomRight.x = _bg.x+_bg.width; | |
_barLeft.y = _bg.y+_HITZONE_FRAME_THICKNESS; | |
_barLeft.graphics.clear(); | |
_barLeft.graphics.beginFill(0, _FRAME_ALPHA); | |
_barLeft.graphics.drawRect(0, 0, _HITZONE_FRAME_THICKNESS, _bg.height-(2*_HITZONE_FRAME_THICKNESS)); | |
_barLeft.graphics.endFill(); | |
_topMoveBar.y = _bg.y+(_HITZONE_FRAME_THICKNESS/2); | |
_topMoveBar.x = _bg.x+_HITZONE_FRAME_THICKNESS; | |
_topMoveBar.graphics.clear(); | |
_topMoveBar.graphics.beginFill(0, _FRAME_ALPHA); | |
_topMoveBar.graphics.drawRect(0, 0, _bg.width-(2*_HITZONE_FRAME_THICKNESS), _HITZONE_FRAME_THICKNESS*2); | |
_topMoveBar.graphics.endFill(); | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onTopRightLeavesMovie(e:Event):void{ | |
_onTopRightUp(); | |
} | |
private function _onTopRightOver(e:MouseEvent):void{ | |
_iconTopRight.x = _cornerTopRight.x; | |
_iconTopRight.y = _cornerTopRight.y; | |
_iconTopRight.visible = true; | |
} | |
private function _onTopRightOut(e:MouseEvent):void{ | |
_iconTopRight.x = _cornerTopRight.x; | |
_iconTopRight.y = _cornerTopRight.y; | |
_iconTopRight.visible = false; | |
} | |
////////////top drag bar///////////// | |
private function _onTopMoveDown(e:MouseEvent):void{ | |
_topMoveBar.parent.addEventListener(MouseEvent.MOUSE_MOVE, _mouseTopMoveBarMoveHandler); | |
_topMoveBar.parent.stage.addEventListener(Event.MOUSE_LEAVE, _onTopMoveLeavesMovie); | |
_this.startDrag(); | |
} | |
private function _onTopMoveUp(e:MouseEvent = null):void{ | |
_mouseTopMoveBarMoveHandler(); | |
_topMoveBar.parent.removeEventListener(MouseEvent.MOUSE_MOVE, _mouseTopMoveBarMoveHandler); | |
_topMoveBar.parent.stage.removeEventListener(Event.MOUSE_LEAVE, _onTopMoveLeavesMovie); | |
_this.stopDrag(); | |
_checkBounds(); | |
} | |
private function _mouseTopMoveBarMoveHandler(e:MouseEvent = null):void { | |
//TODO: when you move we can,t move the whole movie, we have to move all its components | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
if (e != null){ | |
e.updateAfterEvent(); | |
} | |
} | |
private function _onTopMoveLeavesMovie(e:Event):void{ | |
_onTopMoveUp(); | |
} | |
private function _keepInBounds(x:Number,y:Number):Point{ | |
var globalCoords:Point = _bg.parent.localToGlobal(new Point(x,y)); | |
var localCoords:Point = new Point(x,y); | |
var globalOrigin:Point = new Point( (_nativeWindowSizeWidth-_bg.root.stage.stageWidth)/2 , (_nativeWindowSizeHeight-_bg.root.stage.stageHeight)/2 ); | |
var globalOuterLimits:Point = new Point( _bg.root.stage.stageWidth+globalOrigin.x , _bg.root.stage.stageHeight+globalOrigin.y ); | |
var localLimited:Point; | |
var finalX:Number = x; | |
var finalY:Number = y; | |
if (_nativeWindowSizeWidth == -1 || _nativeWindowSizeHeight == -1){ | |
//dont limit snap back | |
return new Point(finalX, finalY); | |
} | |
if ( globalCoords.x < globalOrigin.x ) { | |
localLimited = _this.globalToLocal(globalOrigin); | |
finalX = localLimited.x; | |
} else if (globalCoords.x > globalOuterLimits.x){ | |
localLimited = _this.globalToLocal(globalOuterLimits); | |
finalX = localLimited.x; | |
} | |
if ( globalCoords.y < globalOrigin.y ) { | |
localLimited = _this.globalToLocal(globalOrigin); | |
finalY = localLimited.y; | |
} else if (globalCoords.y > globalOuterLimits.y){ | |
localLimited = _this.globalToLocal(globalOuterLimits); | |
finalY = localLimited.y; | |
} | |
return new Point(finalX, finalY); | |
} | |
private function _checkBounds():void{ | |
if (_nativeWindowSizeWidth == -1 || _nativeWindowSizeHeight == -1){ | |
//dont limit snap back | |
trace("set not to limit drag area"); | |
return; | |
} | |
var rectangle:Rectangle = _topMoveBar.getBounds(_bg.root); | |
//var rectangle2:Rectangle = _bg.root.getBounds(_bg.root.stage); | |
var globalLowerRightCoords:Point = rectangle.bottomRight; | |
var localLowerRightCoords:Point; | |
var localTopLeftCoords:Point; | |
var newOriginTransform:Point = new Point( (_nativeWindowSizeWidth-_bg.root.stage.stageWidth)/2 , (_nativeWindowSizeHeight-_bg.root.stage.stageHeight)/2 ); | |
var globalOuterLimits:Point = new Point( _bg.root.stage.stageWidth+newOriginTransform.x , _bg.root.stage.stageHeight+newOriginTransform.y ); | |
var newLocalOrigin:Point; | |
var isSnappedBack:Boolean; | |
if (globalLowerRightCoords.x < (20+newOriginTransform.x) ) { | |
localLowerRightCoords = _this.parent.globalToLocal(globalLowerRightCoords); | |
localTopLeftCoords = _this.parent.globalToLocal(new Point(rectangle.x,rectangle.y)); | |
newLocalOrigin = _this.parent.globalToLocal(newOriginTransform); | |
_this.x = newLocalOrigin.x-(localLowerRightCoords.x-localTopLeftCoords.x)+20; | |
isSnappedBack = true; | |
} else if (rectangle.x > globalOuterLimits.x-20){ | |
localTopLeftCoords = _this.parent.globalToLocal(globalOuterLimits); | |
_this.x = localTopLeftCoords.x-20; | |
isSnappedBack = true; | |
} | |
if (globalLowerRightCoords.y < (20+newOriginTransform.y) ) { | |
localLowerRightCoords = _this.parent.globalToLocal(globalLowerRightCoords); | |
localTopLeftCoords = _this.parent.globalToLocal(new Point(rectangle.x,rectangle.y)); | |
newLocalOrigin = _this.parent.globalToLocal(newOriginTransform); | |
_this.y = newLocalOrigin.y-(localLowerRightCoords.y-localTopLeftCoords.y)+30; | |
isSnappedBack = true; | |
} else if (rectangle.y > globalOuterLimits.y-20){ | |
localTopLeftCoords = _this.parent.globalToLocal(globalOuterLimits); | |
_this.y = localTopLeftCoords.y-30; | |
isSnappedBack = true; | |
} | |
if (isSnappedBack){ | |
this.dispatchEvent( new UiEvent(UiEvent.RESIZE_WINDOW, {x:_bg.x+_this.x, y:_bg.y+_this.y, width:_bg.width*_this.scaleX, height:_bg.height*_this.scaleY}, false, true) ); | |
} | |
} | |
//TODO: make resize work inside of browser, use fire bug to see when _nativeWindowSizeHeight and stageWidth are being updated | |
//TODO: double click and it minimizes to a bar | |
//sometimes when you drag it off stage it does not snap back, add a timed event after you drop it to double check | |
//TODO: spiff up the arrow icons to have windows or mac icons depending on what system they are using. | |
//TODO: add function to turn resize off and to bind it to the stage size | |
//TODO: destroy method | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.actionscriptflashguru{ | |
import flash.events.EventDispatcher; | |
import flash.events.MouseEvent; | |
import flash.events.Event; | |
import flash.display.DisplayObject; | |
import flash.display.MovieClip; | |
public class UiEvent extends Event{ | |
public static const CLOSE:String = "closesubui"; | |
public static const RESIZE_WINDOW:String = "resizewindow"; | |
public var params:Object; | |
public function UiEvent(type:String, params:Object, bubbles:Boolean = false, cancelable:Boolean = false) { | |
super(type, bubbles, cancelable); | |
this.params = params; | |
} | |
public override function clone():Event{ | |
return new UiEvent(type, this.params, bubbles, cancelable); | |
} | |
public override function toString():String{ | |
return formatToString("UiEvent", "params", "type", "bubbles", "cancelable"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment