<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="1024" minHeight="768" backgroundColor="0xCCCCCC" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import com.themorphicgroup.observer.core.ObservableSprite; import com.themorphicgroup.observer.core.SpriteObserver; private var spriteCount:int = 0; private function addSprites():void { for (var i:int = 0; i < 10; i++) { spriteCount++; var s:ObservableSprite = new ObservableSprite(spriteCount, 400 + (300 * Math.random()), 0 + (300 * Math.random()), 30, 30); SpriteObserver.getInstance().addObservable(s); spriteHolder.addChild(s); } } private function colorSprites(color:uint):void { SpriteObserver.getInstance().colorSprites(color, onColorChange); } private function onColorChange(value:ObservableSprite):void { traceBox.text += "color changed: " + value.id + "\r"; } ]]> </mx:Script> <mx:UIComponent id="spriteHolder"/> <mx:Panel title="Fun with Observer Pattern" x="10" y="10"> <mx:VBox> <mx:Form> <mx:FormHeading label="Add Sprites, then color them"/> <mx:HBox> <mx:Button label="Add 10 Sprites" click="addSprites()"/> <mx:ColorPicker id="colorPicker" /> <mx:Button label="Color All Sprites" click="colorSprites(colorPicker.selectedColor)"/> </mx:HBox> </mx:Form> <mx:TextArea id="traceBox" width="300" height="200"/> </mx:VBox> </mx:Panel> </mx:Application>