Skip to content

Instantly share code, notes, and snippets.

@lynxerzhang
Created March 16, 2012 03:55
Show Gist options
  • Save lynxerzhang/2048449 to your computer and use it in GitHub Desktop.
Save lynxerzhang/2048449 to your computer and use it in GitHub Desktop.
bitmapscale9btn(like movieclip's scale9Grid property)
/**
*
* all code in timeline
* bitmapbutton test
*
* our project use raw bitmap to install button, so more btn resource is repeat
* use ScaleBitmap to reuse resource(like movieclip's scale9Grid)
*/
import org.bytearray.display.ScaleBitmap;
import org.bytearray.display.ScaleBitmapSprite;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
var preferredWidth:int = 200;
var preferredHeight:int = 100;
//the origin mc (have up, over, down' state in it's internal frames)
_mc.gotoAndStop(1);
//use bitmapData to draw btn's upstate
var upData:BitmapData = new BitmapData(_mc.width, _mc.height, true, 0);
upData.draw(_mc);
//create a Sprite and this is use for ScaleBitmap.draw(use graphic's beginBitmapFill method to draw)
var upSprite:Sprite = new Sprite();
ScaleBitmap.draw(upData, upSprite.graphics, preferredWidth, preferredHeight, new Rectangle(4, 4, 94, 28), null, true);
//use bitmapdata to draw btn's overState
_mc.gotoAndStop(2);
//and same as above
var overData:BitmapData = new BitmapData(_mc.width, _mc.height, true, 0);
overData.draw(_mc);
var overSprite:Sprite = new Sprite();
ScaleBitmap.draw(overData, overSprite.graphics, preferredWidth, preferredHeight, new Rectangle(4, 4, 94, 28), null, true);
//disable upState and overState's mouse enabled property
upSprite.mouseChildren = upSprite.mouseEnabled = false;
overSprite.mouseChildren = overSprite.mouseEnabled = false;
//and final, we create a simplebutton to use these state
var button:SimpleButton = new SimpleButton();
button.upState = upSprite;
button.overState = overSprite;
button.downState = overSprite;
button.hitTestState = overSprite;
addChild(button);
//create event listener
button.addEventListener(MouseEvent.CLICK, clickBtn);
button.addEventListener(MouseEvent.MOUSE_OVER, overBtn);
button.addEventListener(MouseEvent.MOUSE_OUT, outBtn);
function clickBtn(evt:MouseEvent):void{
trace("click");
}
function overBtn(evt:MouseEvent):void{
trace("over");
}
function outBtn(evt:MouseEvent):void{
trace("out");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment