package com.oxylusflash.book { import caurina.transitions.Tweener; import com.oxylusflash.book.ScrollBarPart; import flash.display.Sprite; import flash.events.MouseEvent; public class ScrollBarPartAni extends ScrollBarPart { public var bgMc:Sprite; public var iconNormal:Sprite; public var iconOver:Sprite; /** * Animated scrollbar element. */ public function ScrollBarPartAni() { bgMc.cacheAsBitmap = true; iconNormal.cacheAsBitmap = true; iconOver.cacheAsBitmap = true; this.hitArea = bgMc; iconOver.filters = [Global.GLOW]; iconOver.alpha = 0; this.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler, false, 0, true); this.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler, false, 0, true); this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, false, 0, true); } private function mouseDownHandler(e:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler, false, 0, true); } private function stage_mouseUpHandler(e:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler); if (!this.hitTestPoint(stage.mouseX, stage.mouseY, true)) { rollOutHandler(null); } } private function rollOverHandler(e:MouseEvent):void { if (!e || !e.buttonDown) { Tweener.addTween(iconOver, { alpha: 1, base: Global.baseTween, onUpdate: updateIconNormal } ); } } private function rollOutHandler(e:MouseEvent):void { if (!e || !e.buttonDown) { Tweener.addTween(iconOver, { alpha: 0, base: Global.baseTween, onUpdate: updateIconNormal } ); } } private function updateIconNormal():void { iconNormal.alpha = 1 - iconOver.alpha; } } }