1
8
9 import com.sekati.core.App;
10 import com.sekati.core.CoreObject;
11 import com.sekati.core.FWDepth;
12 import com.sekati.draw.Rectangle;
13 import com.sekati.display.StageDisplay;
14 import com.sekati.events.Broadcaster;
15 import com.sekati.events.Dispatcher;
16 import com.sekati.geom.Point;
17 import com.sekati.utils.ClassUtils;
18 import com.sekati.utils.Delegate;
19
20
29 class com.sekati.ui.FauxView extends CoreObject {
30
31 private static var _instance:FauxView;
32 private static var onFauxViewUpdateEVENT:String = "onFauxViewUpdate";
33 private static var _proportionW:Number = 16;
34 private static var _proportionH:Number = 9;
35 private static var RATIO:Number = (_proportionH / _proportionW);
36 private var _this:FauxView;
37 private var _viewport:MovieClip;
38 private var _tbox:MovieClip;
39 private var _bbox:MovieClip;
40
41
44 private function FauxView() {
45 super( );
46 App.log.status(_instance, "*** - FauxView Initialized ..." );
47 _this = this;
48
49 var target:MovieClip = ClassUtils.createEmptyMovieClip( com.sekati.display.BaseClip, _root, "fauxView", {_x:0, _y:0, _depth:FWDepth.FauxView} );
50
51 _viewport = ClassUtils.createEmptyMovieClip( com.sekati.display.BaseClip, target, "__viewport_center_area__", {_x:0, _y:0, _visible:false} );
52 Rectangle.draw( _viewport, new Point( 0, 0 ), new Point( _proportionW, _proportionH ), 0xFFFF00, 25, 0 );
53
54 _tbox = ClassUtils.createEmptyMovieClip( com.sekati.display.BaseClip, target, "__viewport_top_letterbox__", {_x:0, _y:0, _visible:true} );
55 Rectangle.draw( _tbox, new Point( 0, 0 ), new Point( _proportionW, _proportionH ), 0x000000, 100, 0 );
56
57 _bbox = ClassUtils.createEmptyMovieClip( com.sekati.display.BaseClip, target, "__viewport_bot_letterbox__", {_x:0, _y:0, _visible:true} );
58 Rectangle.draw( _bbox, new Point( 0, 0 ), new Point( _proportionW, _proportionH ), 0x000000, 100, 0 );
59
60 Dispatcher.$.addEventListener( StageDisplay.onStageResizeEVENT, Delegate.create( _this, update ) );
61 Dispatcher.$.addEventListener( StageDisplay.onStageResizeCompleteEVENT, Delegate.create( _this, update ) );
62 Dispatcher.$.addEventListener( StageDisplay.onStageFullScreenEVENT, Delegate.create( _this, update ) );
63
64 update( );
65 }
66
67
71 public static function getInstance():FauxView {
72 if (!_instance) {
73 _instance = new FauxView( );
74 }
75 return _instance;
76 }
77
78
81 public static function get $():FauxView {
82 return FauxView.getInstance( );
83 }
84
85
91 public function setProp(w:Number, h:Number):Void {
92 _proportionW = w;
93 _proportionH = h;
94 update( );
95 }
96
97
101 private function update():Void {
102 var w:Number = Stage.width;
103 var h:Number = int( w * RATIO );
104 var y:Number = int( Stage.height / 2 - h / 2 );
105 var bh:Number = (int( Stage.height - h - y ) < 23) ? 23 : int( Stage.height - h - y );
106
107 _viewport._width = _tbox._width = _bbox._width = w;
108 _viewport._height = h;
109 _viewport._y = y;
110 _tbox._height = y;
111 _bbox._height = bh;
112 _bbox._y = Stage.height - bh;
113 Broadcaster.$.broadcast( onFauxViewUpdateEVENT, p );
114 }
115
116 public function get panoramic_height():Number {
117 return int( Stage.width * RATIO );
118 }
119
120
124 public function get x():Number {
125 return _viewport._x;
126 }
127
128 public function get _x():Number {
129 return _viewport._x;
130 }
131
132
136 public function get y():Number {
137 return _viewport._y;
138 }
139
140 public function get _y():Number {
141 return _viewport._y;
142 }
143
144
148 public function get w():Number {
149 return _viewport._width;
150 }
151
152 public function get _width():Number {
153 return _viewport._width;
154 }
155
156
160 public function get h():Number {
161 return _viewport._height;
162 }
163
164 public function get _height():Number {
165 return _viewport._height;
166 }
167
168
172 public function get cx():Number {
173 return (w / 2);
174 }
175
176
180 public function get cy():Number {
181 return (h / 2) + y;
182 }
183
184
188 public function get bottom():Number {
189 return y + h;
190 }
191
192
196 public function get shape():MovieClip {
197 return _viewport;
198 }
199
200
204 public function get topShape():MovieClip {
205 return _tbox;
206 }
207
208
212 public function get botShape():MovieClip {
213 return _bbox;
214 }
215
216
220 public function get p():Object {
221 return {x:x, y:y, w:w, h:h, b:bottom};
222 }
223 }
224