package com.oxylusflash.book { import caurina.transitions.Tweener; import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.Event; public class BookPagesHolder extends Sprite { private var holder:Sprite; private var _position:int = -1; public static const POSITION_CHANGE:String = "positionChange"; // Actual pages wrapper. public function BookPagesHolder() { holder = this.addChild(new Sprite) as Sprite; holder.x = -Global.pageW2; holder.y = -Global.pageH2; holder.alpha = 0; } /** * Fade in. */ public function show():void { Tweener.addTween(holder, { alpha: 1, base: Global.baseTween }); } /** * Add page. * @param page The page. */ public function addPage(page:DisplayObject):void { if (!holder.contains(page)) { holder.addChild(page); } } /** * Remove page. * @param page Page to be removed. */ public function remPage(page:DisplayObject):void { if (holder.contains(page)) { holder.removeChild(page); } } /** * X position of the holder. */ public function get holderX():Number { return holder.x; } /** * Position. */ public function get position():int { return _position; } public function set position(value:int):void { if (_position != value) { _position = value; Tweener.addTween(holder, { x: _position * Global.pageW2, rounded: true, base: Global.baseTween, onUpdate: firePositionChangeEvent } ); } } /** * Fire position change event. */ private function firePositionChangeEvent():void { dispatchEvent(new Event(POSITION_CHANGE)); } /** * Change position instantly. * @param pos */ public function roughPositionChange(pos:int):void { _position = pos; holder.x = _position * Global.pageW2; } /** * Overrides. */ override public function get alpha():Number { return super.alpha; } override public function set alpha(value:Number):void { super.alpha = value; this.visible = value > 0; } override public function get mouseX():Number { return super.mouseX - _position * Global.pageW2; } } }