topical media & game development

talk show tell print

physic-flex-ape-playground-main.mx

physic-flex-ape-playground-main.mx [swf] [flash] flex


  <?xml version="1.0" encoding="utf-8"?>
  <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
      layout="absolute"
      creationComplete="initApp()" currentState="circleState"
  >
      <mx:states>
          <mx:State name="circleState">
              <mx:AddChild relativeTo="{controlbar1}" position="lastChild">
                  <mx:NumericStepper minimum="1" maximum="100" stepSize="5" id="circleRadius" value="20"/>
              </mx:AddChild>
              <mx:AddChild relativeTo="{controlbar1}" position="lastChild">
                  <mx:ColorPicker id="itemColor"/>
              </mx:AddChild>
          
              <mx:AddChild relativeTo="{controlbar1}" position="lastChild">
                  <mx:CheckBox label="Fixed" id="isFixed" fontStyle="normal" fontWeight="bold" fontSize="14"/>
              </mx:AddChild>
              <mx:SetProperty target="{radiobutton1}" name="selected" value="true"/>
          </mx:State>
      </mx:states>
  <mx:Script>
      <![CDATA[
          import org.cove.ape.RectangleParticle;
          import org.cove.ape.AbstractParticle;
          import org.cove.ape.Group;
          import org.cove.ape.CircleParticle;
          import org.cove.ape.AVector;
          import org.cove.ape.APEngine;
          private var contentHolder:Sprite=new Sprite();
          
          private var defaultGroup:Group=new Group();
          
          private var mousePosition:Point;
          
          private function initApp():void{
              spriteWrapper.addChild(contentHolder);
              addEventListener(Event.ENTER_FRAME,run);
              APEngine.init(1/3);
              APEngine.container=contentHolder;
              APEngine.addMasslessForce(new AVector(0,8));
              
            
              defaultGroup.collideInternal=true;
              
              
              var ground:RectangleParticle=new RectangleParticle(this.width/2,this.height-200,this.width-50,10,0,true);
              ground.setFill(0xCCCCCC);
              defaultGroup.addParticle(ground);
              APEngine.addGroup(defaultGroup);
              viewScreen.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
          }
          private function run(e:Event):void{
          APEngine.step();
          APEngine.paint();
          }
          private function addSelectedParticle():void{
              var createdParticle:AbstractParticle;
              
              createdParticle=createCircle();
              
              
              createdParticle.setFill(itemColor.selectedColor);
              defaultGroup.addParticle(createdParticle);
              
          }
          
          private function createCircle():AbstractParticle{
              var circle:CircleParticle=new CircleParticle(mousePosition.x,mousePosition.y,circleRadius.value,isFixed.selected,3,0.7);
              return circle;
              
          }
          private function onMouseDown(e:MouseEvent):void{
          
              mousePosition=new Point(e.localX,e.localY);
              addSelectedParticle()
          }
          
      ]]>
  </mx:Script>
      <mx:Panel bottom="0" right="0" top="0" left="0" id="panel1" borderColor="#040000">
              <mx:Canvas id="viewScreen"  width="100%" height="100%">
          <mx:UIComponent id="spriteWrapper" />
          
          
      </mx:Canvas>
          <mx:ControlBar width="100%" id="controlbar1">
              <mx:VBox id="shapeBox">
                  <mx:RadioButtonGroup id="particleGroup"/>
                  <mx:RadioButton label="CircleParticle" id="radiobutton1" click="this.currentState='circleState'" groupName="particleGroup"/>
                  <mx:RadioButton label="RectangleParticle" groupName="particleGroup"/>
                  <mx:RadioButton label="WheelParticle" groupName="particleGroup"/>
              
              </mx:VBox>
              
          </mx:ControlBar>
      </mx:Panel>
  </mx:Application>
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.