チェンジセット 4539

差分発生行の前後
無視リスト:
コミット日時:
2011/05/19 02:04:25 (1 年前)
コミッタ:
keim
ログメッセージ:

cannonml v0.31 update

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/CannonML/trunk/doc/cannonML.html

    r4456 r4539  
    181181      </DIV> 
    182182      <DIV class="statement"> 
    183         $sin, $cos, $tan, $asn, $acs, $atn, $sqr, $int 
    184       </DIV> 
    185       <DIV class="outline"> 
    186         �P�����Z�q�Ő���,�]��,�����t����,�t�]��,�t��������؎̂Ă�Z���܂��D 
     183        $sin, $cos, $tan, $asn, $acs, $atn, $sqr, $int and $abs 
     184      </DIV> 
     185      <DIV class="outline"> 
     186        �P�����Z�q�Ő���,�]��,�����t����,�t�]��,�t��������؎̂����l��Z���܂��D 
     187      </DIV> 
     188      <DIV class="statement"> 
     189        $i?, $i?? 
     190      </DIV> 
     191      <DIV class="outline"> 
     192        ������������܂��D"$i?(n)"���Ԃ��͈͂��`(n-1)�C"$i??(n)"��-n+1)�`(n-1)�ł�. 
    187193      </DIV> 
    188194      <DIV class="discription"> 
     
    347353    <DIV class="command"> 
    348354      <DIV class="statement"> 
    349         l$r=, l$1=, l$2=, l$3=,... l$9= <i>[���l]</i> 
     355        l$r=, l$1=, l$2=, l$3=,... l$9 <i>[���l]</i> 
    350356      </DIV> 
    351357      <DIV class="outline"> 
  • as3/CannonML/trunk/doc/cannonML_e.html

    r4456 r4539  
    178178      </DIV> 
    179179      <DIV class="statement"> 
    180         $sin, $cos, $tan, $asn, $acs, $atn, $sqr, $int 
     180        $sin, $cos, $tan, $asn, $acs, $atn, $sqr, $int and $abs 
    181181      </DIV> 
    182182      <DIV class="outline"> 
    183183        The sine, cosine, tangent, arcsine, arccosine, arctanenget, square root and floor calculation respectively. 
     184      </DIV> 
     185      <DIV class="statement"> 
     186        $i?, $i?? 
     187      </DIV> 
     188      <DIV class="outline"> 
     189        (random) Return a random integer�DThe ranges are 0<=$i?(n)<n and -n<$i?(n)<n. 
    184190      </DIV> 
    185191      <DIV class="discription"> 
  • as3/CannonML/trunk/src/org/si/cml/CMLObject.as

    r4456 r4539  
    227227            _globalRank[0] = (r<_globalRankRangeMin) ? _globalRankRangeMin : (r>_globalRankRangeMax) ? _globalRankRangeMax : r; 
    228228        } 
    229          
     229 
    230230        // common properties 
    231231        /** Construction ID, this value changes when the object is destroyed. 
     
    324324    //------------------------------------------------------------ 
    325325        // statics 
    326         static private var _activeObjects:CMLList = new CMLList();     // active object list 
    327         static private var _root:CMLRoot = null;                       // root object instance 
    328         static private var _funcRand:Function = Math.random;           // random function 
    329         static private var _globalRankRangeMin:Number = 0;             // the range of globalRank 
    330         static private var _globalRankRangeMax:Number = 1;             // the range of globalRank 
     326        static private var _activeObjects:CMLList = new CMLList();      // active object list 
     327        static private var _root:CMLRoot = null;                        // root object instance 
     328        static private var _funcRand:Function = Math.random;            // random function 
     329        static private var _globalRankRangeMin:Number = 0;              // the range of globalRank 
     330        static private var _globalRankRangeMax:Number = 1;              // the range of globalRank 
    331331        /** @private */ 
    332332        static _cml_internal var _globalRank:Array = new Array(10);     // array of globalRank 
     
    409409        /** Statement "n" calls this when it needs. Override this to define the new CMLObject created by "n" command. 
    410410         *  @param args The arguments of sequence. 
    411         *  @return The new CMLObject created by "n" command
     411        *  @return The new CMLObject created by "n" command. You must not activate(call create()) returning CMLObject
    412412         */ 
    413413        public function onNewObject(args:Array) : CMLObject 
     
    419419        /** Statement "f" calls this when it needs. Override this to define the new CMLObject created by "f" command. 
    420420         *  @param args The arguments of sequence. 
    421          *  @return The new CMLObject created by "n" command. 
     421         *  @return The new CMLObject created by "n" command. You must not activate(call create()) returning CMLObject. 
    422422         */ 
    423423        public function onFireObject(args:Array) : CMLObject 
     
    449449        /** <b>Call this function for each frame</b>. This function calls all CMLObject.onUpdate()s. */ 
    450450        static public function update() : void 
    451         { 
     451        {             
    452452            CMLFiber._cml_fiber_internal::_onUpdate(); 
    453453             
     
    489489 
    490490         
    491         /** The return value is from CMLObject._funcRand
     491        /** The return value is from CMLObject.funcRand. Call CMLObject.funcRand internally
    492492         *  @return The random number between 0-1.  
    493          *  @see CMLObject#_funcRand 
     493         *  @see CMLObject#funcRand 
    494494         */ 
    495495        static public function rand() : Number { return _funcRand(); } 
    496496 
    497497 
    498         /** Set the range of globalRank. */ 
     498        /** Set the range of globalRank. The global rank value is limited in this range. */ 
    499499        static public function setGlobalRankRange(min:Number, max:Number) : void 
    500500        { 
     
    508508    // create / destroy 
    509509    //------------------------------------------------------------ 
    510         /** Create new object on the stage. 
     510        /** Create new object on the CML stage. 
    511511         *  @param x_         X value of this object on a stage or parent(if its a part of parent). 
    512512         *  @param y_         Y value of this object on a stage or parent(if its a part of parent). 
  • as3/CannonML/trunk/src/org/si/cml/CannonML.as

    r4456 r4539  
    11//---------------------------------------------------------------------------------------------------- 
    22// CannonML 
    3 //  Copyright (c) 2010 keim All rights reserved. 
     3//  Copyright (c) 2011 keim All rights reserved. 
    44//  Distributed under BSD-style license (see license.txt). 
    55//---------------------------------------------------------------------------------------------------- 
     
    1010    class CannonML { 
    1111        /** Version information */ 
    12         static public const VERSION:String = "0.3.0"; 
     12        static public const VERSION:String = "0.3.1"; 
    1313         
    1414         
  • as3/CannonML/trunk/src/org/si/cml/core/CMLBarrageElem.as

    r4456 r4539  
    155155    // calculation of sequencial bullet 
    156156    //-------------------------------------------------- 
    157         // initialize 
    158         private function _init(parent:CMLBarrageElem) : void 
     157        /** @private initialize */ 
     158        public function _init(parent:CMLBarrageElem) : void 
    159159        { 
    160160            counter = count; 
     
    163163        } 
    164164         
    165         // initialize random 
    166         private function _init_random(parent:CMLBarrageElem) : void 
     165        /** @private initialize random */ 
     166        public function _init_random(parent:CMLBarrageElem) : void 
    167167        { 
    168168            counter = count; 
     
    173173        } 
    174174 
    175         // update 
    176         private function _update() : void 
     175        /** @private update */ 
     176        public function _update() : void 
    177177        { 
    178178            angle += angle_step; 
     
    181181        } 
    182182         
    183         // update random 
    184         private function _update_random() : void 
     183        /** @private update random */ 
     184        public function _update_random() : void 
    185185        { 
    186186            angle = angle_offset + angle_step * CMLObject.rand(); 
  • as3/CannonML/trunk/src/org/si/cml/core/CMLFormula.as

    r4456 r4539  
    1111     
    1212     
    13      
    14      
    15     /** @private */ 
     13    /** @private statemant for formula calculation */ 
    1614    internal class CMLFormula extends CMLState 
    1715    { 
     
    4745            return _operand_rex; 
    4846        } 
    49  
    50  
    51  
     47         
     48         
     49         
     50         
    5251    // functions 
    5352    //------------------------------------------------------------ 
     
    7271        } 
    7372 
    74         protected override function _setCommand(cmd:String) : CMLState 
     73         
     74        override protected function _setCommand(cmd:String) : CMLState 
    7575        { 
    7676            return this; 
     
    7878 
    7979 
     80         
     81         
    8082    // function to create formula structure 
    8183    //------------------------------------------------------------ 
     
    99101        } 
    100102         
     103         
    101104        // push operand stac 
    102105        internal function pushLiteral(literal:*) : void 
     
    109112        } 
    110113 
     114         
    111115        // push prefix 
    112116        internal function pushPrefix(prefix:*, isSingle:Boolean) : Boolean 
     
    115119        } 
    116120 
     121         
    117122        // push postfix 
    118123        internal function pushPostfix(postfix:*, isSingle:Boolean) : Boolean 
     
    120125            return (postfix != undefined) ? _parse_and_push(_postfixRegExp, postfix, isSingle) : true; 
    121126        } 
     127         
    122128         
    123129        // call from pushPostfix and pushPrefix. 
     
    133139        } 
    134140 
     141         
    135142        // construct formula structure 
    136143        internal function construct() : Boolean 
     
    147154        } 
    148155 
     156         
     157         
    149158 
    150159    // calculation 
  • as3/CannonML/trunk/src/org/si/cml/core/CMLFormulaElem.as

    r4456 r4539  
    99    import org.si.cml.CMLFiber; 
    1010     
     11     
    1112    /** @private */ 
    1213    internal class CMLFormulaElem 
  • as3/CannonML/trunk/src/org/si/cml/core/CMLFormulaLiteral.as

    r4456 r4539  
    1010    import org.si.cml.CMLObject; 
    1111    import org.si.cml.namespaces._cml_internal; 
    12      
    13      
    1412     
    1513     
  • as3/CannonML/trunk/src/org/si/cml/core/CMLFormulaOperator.as

    r4456 r4539  
    88package org.si.cml.core { 
    99    import org.si.cml.CMLFiber; 
    10      
     10    import org.si.cml.CMLObject; 
    1111     
    1212     
     
    1616        static private  var sin:CMLSinTable = new CMLSinTable(); 
    1717         
    18         static internal var prefix_rex :String = "([-!(]|\\$sin|\\$cos|\\$tan|\\$asn|\\$acs|\\$atn|\\$sqr|\\$int)"; 
     18        static internal var prefix_rex :String = "([-!(]|\\$sin|\\$cos|\\$tan|\\$asn|\\$acs|\\$atn|\\$sqr|\\$i\\?|\\$i\\?\\?|\\$int|\\$abs)"; 
    1919        static internal var postfix_rex:String = "(\\))"; 
    2020 
     
    2525        internal var opr1:CMLFormulaElem = null; 
    2626        private  var func:Function = null; 
     27         
    2728         
    2829        function CMLFormulaOperator(opr:String="", isSingle:Boolean=false) 
     
    4344                if (opr == "$atn") { func=atn;  priorL=10; priorR=11; } else 
    4445                if (opr == "$sqr") { func=sqr;  priorL=10; priorR=11; } else  
    45                 if (opr == "$int") { func=ind;  priorL=10; priorR=11; } 
     46                if (opr == "$int") { func=ind;  priorL=10; priorR=11; } else 
     47                if (opr == "$abs") { func=abs;  priorL=10; priorR=11; } else 
     48                if (opr == "$i?")  { func=ird;  priorL=10; priorR=11; } else 
     49                if (opr == "$i??") { func=srd;  priorL=10; priorR=11; }  
    4650            } else { 
    4751                oprcnt = 2; 
     
    6064        } 
    6165         
     66         
    6267        internal override function calc(fbr:CMLFiber) : Number 
    6368        { 
    6469            return func(opr0.calc(fbr), (oprcnt==2) ? (opr1.calc(fbr)) : 0); 
    6570        } 
     71         
    6672         
    6773        static private function add(r0:Number, r1:Number) : Number { return r0+r1; } 
     
    8086        static private function sqr(r0:Number, r1:Number) : Number { return Math.sqrt(r0); } 
    8187        static private function ind(r0:Number, r1:Number) : Number { return Number(int(r0)); } 
     88        static private function abs(r0:Number, r1:Number) : Number { return (r0<0)?(-r0):(r0); } 
     89        static private function ird(r0:Number, r1:Number) : Number { return Number(int(CMLObject.rand()*r0)); } 
     90        static private function srd(r0:Number, r1:Number) : Number { return Number(int(CMLObject.rand()*(r0*2+1))-r0); } 
    8291        static private function grt(r0:Number, r1:Number) : Number { return (r0>r1)?1:0; } 
    8392        static private function geq(r0:Number, r1:Number) : Number { return (r0>=r1)?1:0; } 
  • as3/CannonML/trunk/src/org/si/cml/core/CMLState.as

    r4456 r4539  
    123123            case "[s?": func = _level_start; type = ST_SELECT;   if (_args.length==0) throw Error("no arguments in [s?"); break; 
    124124            case ":":   func = _else_start;  type = ST_ELSE;     _resetParameters(1); break; 
    125             case "]":   func = _block_end;   type = ST_BLOCKEND; break; 
     125            case "]":   func = _block_end;   type = ST_BLOCKEND; _resetParameters(1); break; 
    126126            // interval 
    127127            case "i":   func = _i;  _resetParameters(1); break; 
     
    260260        private function _block_end(fbr:CMLFiber) : Boolean { 
    261261            if (jump.type == ST_LOOP) { 
    262                 if (++fbr.lcnt[0] != int(jump._args[0])) { 
     262                var lmax:int = int(_args[0] || jump._args[0]); 
     263                if (++fbr.lcnt[0] != lmax) { 
    263264                    fbr._pointer = jump; 
    264265                    return true; 
  • as3/CannonML/trunk/src/org/si/cml/core/interpolation.as

    r4456 r4539  
    55    // variables 
    66    //-------------------------------------------------- 
    7         private var P:Number = 0; 
    8         private var Q:Number = 0; 
    9         private var R:Number = 0; 
    10         private var S:Number = 0; 
     7        public var P:Number = 0; 
     8        public var Q:Number = 0; 
     9        public var R:Number = 0; 
     10        public var S:Number = 0; 
    1111         
    1212         
  • as3/CannonML/trunk/src/org/si/cml/extensions/Actor.as

    r4456 r4539  
    3838         
    3939         
    40         /** Life, you can use this as you like. Set life to 1 when the object is created. */ 
     40        /** Life, you can use this as you like. */ 
    4141        public var life:Number = 1; 
    4242        /** Size to use in hit test */ 
  • as3/CannonML/trunk/src/org/si/cml/extensions/BulletRunner.as

    r4456 r4539  
    99    import flash.events.Event; 
    1010    import flash.display.Shape; 
     11    import flash.utils.Dictionary; 
    1112    import org.si.cml.*; 
    1213    import org.si.cml.core.CMLList; 
     
    1920    // variables 
    2021    //------------------------------------------------------------ 
    21         // sequence 
    22         private var _sequence:CMLSequence; 
    23         // root fiber 
    24         private var _fiber:CMLFiber; 
    25          
    2622        /** target property name of x */ 
    2723        public var xPropertyName:String; 
     
    3127        public var anglePropertyName:String; 
    3228         
    33         // callback functions 
    34         private var _onUpdated:Function = null; 
    35         private var _onDestroyed:Function = null; 
    36         private var _onNew:Function = null; 
    37         private var _onFire:Function = null; 
    38         private var _onCreatedInternal:Function = null; 
    39          
    40         // sequence parameters 
    41         private var _sequenceParameter:Array; 
     29        /** callback when the CML object is created on CML stage */ 
     30        public var atCreate:Function = null; 
     31        /** callback when the CML object is updated */ 
     32        public var atUpdate:Function = null; 
     33        /** callback when the CML object is destroyed on CML stage */ 
     34        public var atDestroy:Function = null; 
     35        /** callback when the CML object is required by "n*" commands */ 
     36        public var atNewObject:Function = null; 
     37        /** callback when the CML object is required by "f*" commands  */ 
     38        public var atFireObject:Function = null; 
    4239         
    4340        /** target property name of x */ 
     
    4845        static public var defaultAnglePropertyName:String = "rotation"; 
    4946         
     47        // default target 
     48        static private var _bulletRunnerDefaultTarget:CMLObject = new CMLObject(); 
     49         
    5050         
    5151         
     
    5353    // properties 
    5454    //------------------------------------------------------------ 
    55         /** parent object, null thie BulletRunner is created by aplly() or the parent is destructed. */ 
     55        /** parent object, returns null when this BulletRunner is created by aplly() or the parent is destructed. */ 
    5656        public function get parentActor() : * {  
    5757            var brParent:BulletRunner = parent as BulletRunner; 
     
    5959        } 
    6060         
    61         /** controling sequence, CMLSequence, CannonML String or BulletML XML is available for setter and only CMLSequence is returned from getter. */ 
    62         public function get sequence() : * { return _sequence; } 
    63         public function set sequence(s:*) : void {  
    64             if (s == null) _sequence = null; 
    65             else if (s is CMLSequence) _sequence = s; 
    66             else if (s != null) _sequence = new CMLSequence(s); 
    67             else _sequence = null; 
    68         } 
    69          
    70          
    71         /** set callback functions. The key of "update", "destroy", "new" and "fire" are available. The function type is function(br:BulletRunner) : Boolean. */ 
    72         public function get callbacks() : * { return {"update":_onUpdated, "destroy":_onDestroyed, "new":_onNew, "fire":_onFire}; } 
     61         
     62        /** set callback functions. The key of "onCreate", "onUpdate", "onDestroy", "onNew" and "onFire" are available.<br/> 
     63         *  The function format of onCreate, onUpdate and onDestroy are function(br:BulletRunner) : Boolean. <br/> 
     64         *  The function format of onNew and onFire are function(args:Array) : BulletRunner. You have to return your new actor by "n" or "f" command. The sequrence parameters are passed by arguments.<br/> 
     65         */ 
     66        public function get callbacks() : * { return {"onCreate":atCreate, "onUpdate":atUpdate, "onDestroy":atDestroy, "onNew":atNewObject, "onFire":atFireObject}; } 
    7367        public function set callbacks(functions:*) : void { 
    7468            if (functions == null) { 
    75                 _onUpdated = null; 
    76                 _onDestroyed = null; 
    77                 _onNew = null; 
    78                 _onFire = null; 
     69                atCreate = null; 
     70                atUpdate = null; 
     71                atDestroy = null; 
     72                atNewObject = null; 
     73                atFireObject = null; 
    7974            } else { 
    80                 if ("update" in functions) _onUpdated = functions["update"]; 
    81                 if ("destroy" in functions) _onDestroyed = functions["destroy"]; 
    82                 if ("new" in functions) _onNew = functions["new"]; 
    83                 if ("fire" in functions) _onFire = functions["fire"]; 
     75                if ("onCreate" in functions) atCreate = functions["onCreate"]; 
     76                if ("onUpdate" in functions) atUpdate = functions["onUpdate"]; 
     77                if ("onDestroy" in functions) atDestroy = functions["onDestroy"]; 
     78                if ("onNew" in functions) atNewObject = functions["onNew"]; 
     79                if ("onFire" in functions) atFireObject = functions["onFire"]; 
    8480            } 
    8581        } 
     
    119115         
    120116         
     117        /** Is paused ? */ 
     118        static public function isPaused() : Boolean { return _tickerPaused; } 
     119         
     120         
    121121         
    122122         
     
    135135        /** apply BulletRunner to the object 
    136136         *  @param actor The object controlled by BulletRunner. 
    137          *  @param sequence Controling sequence, CMLSequence, CannonML String or BulletML XML is available. 
    138          *  @param callbacks set Callback functions by object. The key of "update", "destroy", "new" and "fire" are available. 
     137         *  @param callbacks set Callback functions by object. The key of "onCreate", "onUpdate", "onDestroy", "onNew" and "onFire" are available. 
    139138         *  @param propertyNames target property name to control. The key of "x", "y" and "angle" are available. 
    140139         *  @return BulletRunner instance 
    141140         */ 
    142         static public function apply(actor:*, sequence:* = null, callbacks:* = null, propertyNames:* = null) : BulletRunner 
     141        static public function apply(actor:*, callbacks:* = null, propertyNames:* = null) : BulletRunner 
    143142        { 
    144143            if (!_tickerAvailable) { 
    145144                _startTicker(); 
    146145                ScopeLimitObject.initialize(); 
     146                _bulletRunnerDefaultTarget.setAsDefaultTarget(); 
    147147            } 
    148148             
    149             var br:BulletRunner = _new(); 
    150             br.actor = actor; 
    151             br.sequence = sequence; 
    152             br.callbacks = callbacks; 
    153             br.propertyNames = propertyNames; 
    154             br.create(actor[br.xPropertyName], actor[br.yPropertyName]); 
    155             if (br._sequence) br._fiber = br.execute(br._sequence); 
     149            //var br:BulletRunner = _brunnerDict[actor]; 
     150            var br:BulletRunner = null; 
     151            if (br == null) br = _new_BulletRunner(actor, callbacks, propertyNames); 
     152             
    156153            return br; 
    157154        } 
    158155         
    159156         
     157        /** update position that all bullets target to.  
     158         *  @param xpos x number. 
     159         *  @param ypos y number. 
     160         */ 
     161        static public function updateTargetPosition(xpos:Number, ypos:Number) : void 
     162        { 
     163            _bulletRunnerDefaultTarget.x = xpos; 
     164            _bulletRunnerDefaultTarget.y = ypos; 
     165        } 
     166         
     167         
     168        /** pause all bullet runner runnings */ 
     169        static public function pause() : void 
     170        { 
     171            _tickerPaused = true; 
     172        } 
     173         
     174         
     175        /** resume all bullet runner runnings pause */ 
     176        static public function resume() : void  
     177        { 
     178            _tickerPaused = false; 
     179        } 
     180         
     181         
     182        /** run sequence. call CMLObject::create and CMLObject::execute inside. 
     183         *  @param seq sequence. CMLSequence instance, String in CannonML or XML in BulletML is available. 
     184         *  @param args The array of arguments to execute sequence. 
     185         *  @param invertFlag The flag to invert execution, same as 'm' command. 
     186         *  @return Instance of fiber that execute the sequence. 
     187         */ 
     188        public function runSequence(seq:*, args:Array=null, invertFlag:uint=0) : CMLFiber 
     189        { 
     190            var s:CMLSequence = (seq is String || seq is XML) ? (new CMLSequence(seq)) : seq as CMLSequence,  
     191                fiber:CMLFiber; 
     192            if (!isActive) create(actor[xPropertyName], actor[yPropertyName]); 
     193            if (s) fiber = execute(s, args, invertFlag); 
     194            return fiber; 
     195        } 
     196         
     197         
     198         
    160199         
    161200    // handlers 
     
    164203        override public function onCreate() : void 
    165204        { 
    166             if (_onCreatedInternal != null) _onCreatedInternal(this, _sequenceParameter); 
    167         } 
    168  
    169          
     205            if (atCreate != null) atCreate(this); 
     206        } 
     207 
     208 
    170209        /** @private */ 
    171210        override public function onDestroy() : void 
    172211        { 
    173             if (_onDestroyed != null) _onDestroyed(this); 
    174         } 
    175  
    176          
    177         /** @private */ 
    178         override public function onUpdated() : void 
     212            if (atDestroy != null) atDestroy(this); 
     213        } 
     214 
     215 
     216        /** @private */ 
     217        override public function onUpdate() : void 
    179218        { 
    180219            if (isEscaped) { 
     
    184223                actor[yPropertyName] = y; 
    185224                if (anglePropertyName != null) actor[anglePropertyName] = angleOnStage; 
    186                 if (_onUpdated != null) _onUpdated(this); 
     225                if (atUpdate != null) atUpdate(this); 
    187226            } 
    188227        } 
     
    192231        override public function onNewObject(args:Array) : CMLObject 
    193232        { 
    194             return _new(args, _onNew, _onNew, _onFire); 
     233            if (atNewObject == null) return null; 
     234            var actor:* = atNewObject(args); 
     235            return (actor is BulletRunner) ? actor : _new_BulletRunner(actor); 
    195236        } 
    196237 
     
    199240        override public function onFireObject(args:Array) : CMLObject 
    200241        { 
    201             return _new(args, _onFire, _onNew, _onFire); 
    202         } 
    203          
    204          
     242            if (atFireObject == null) return null; 
     243            var actor:* = atFireObject(args); 
     244            return (actor is BulletRunner) ? actor : _new_BulletRunner(actor); 
     245        } 
     246 
     247 
    205248        /** @private */ 
    206249        public override function _finalize() : void 
     
    215258    // ticker 
    216259    //------------------------------------------------------------ 
     260        // ticker 
    217261        static private var _ticker:Shape = null; 
    218262        static private var _tickerAvailable:Boolean = false; 
     263        static private var _tickerPaused:Boolean = false; 
    219264         
    220265        static private function _startTicker() : void { 
     
    230275         
    231276        static private function _onTick(e:Event) : void { 
    232             CMLObject.update(); 
     277            if (!_tickerPaused) CMLObject.update(); 
    233278        } 
    234279         
     
    238283    // factory 
    239284    //------------------------------------------------------------ 
    240         /** free list */ 
     285        // free list 
    241286        static private var _freeList:CMLList = new CMLList(); 
     287        static private var _brunnerDict:Dictionary = new Dictionary(true); 
    242288         
    243289         
    244290        /** create new instance */ 
    245         static private function _new(params:Array=null, onCreatedInternal:Function=null, onNew:Function=null, onFire:Function=null) : BulletRunner 
     291        static private function _new_BulletRunner(actor:*, callbacks:*=null, propertyNames:*=null) : BulletRunner 
    246292        { 
    247293            var br:BulletRunner = (_freeList.isEmpty()) ? new BulletRunner() : BulletRunner(_freeList.pop()); 
    248             br._onCreatedInternal = onCreatedInternal
    249             br._onNew = onNew
    250             br._onFire = onFire
    251             br._sequenceParameter = params
     294            br.actor = actor
     295            br.callbacks = callbacks
     296            br.propertyNames = propertyNames
     297            //_brunnerDict[actor] = br
    252298            return br; 
    253299        } 
     
    255301         
    256302        // delete instance 
    257         static private function _delete(rnr:BulletRunner) : void 
    258         { 
    259             _freeList.push(rnr); 
     303        static private function _delete(br:BulletRunner) : void 
     304        { 
     305            //delete _brunnerDict[br.actor]; 
     306            _freeList.push(br); 
    260307        } 
    261308    } 
  • as3/CannonML/trunk/src/org/si/cml/extensions/ScopeLimitObject.as

    r4456 r4539  
    133133         
    134134         
     135        /** Check scope and call destroy(0) when escaped.  
     136         *  @return flag escaped 
     137         */ 
     138        public function checkScope() : Boolean 
     139        { 
     140            if (isEscaped) { 
     141                destroy(0); 
     142                return true; 
     143            } 
     144            return false; 
     145        } 
     146         
     147         
     148        /** Check scope and stay inside of scope. 
     149         *  @return flag limited 
     150         */ 
     151        public function limitScope() : Boolean 
     152        { 
     153            var ret:Boolean = false; 
     154            if (x<scopeXmin) { 
     155                x = scopeXmin;  
     156                ret = true; 
     157            } else if (x>scopeXmax) { 
     158                x = scopeXmax; 
     159                ret = true; 
     160            } 
     161            if (y<scopeYmin) { 
     162                y = scopeYmin;  
     163                ret = true; 
     164            } else if (y>scopeYmax) { 
     165                y = scopeYmax; 
     166                ret = true; 
     167            } 
     168            return ret; 
     169        } 
     170         
     171         
     172         
    135173         
    136174         
  • as3/CannonML/trunk/src/org/si/cml/extensions/framework/CMLMovieClip.as

    r4456 r4539  
    2323        /** Screen */ 
    2424        public var screen:BitmapData = null; 
     25        /** Pause flag */ 
     26        public var pause:Boolean = false; 
    2527         
    2628        private var _addEnterFrameListener:Boolean;     // flag to add enter frame event listener  
     
    120122        public function update(e:Event=null) : void 
    121123        { 
    122             CMLObject.update(); 
     124            if (!pause) CMLObject.update(); 
    123125            scene._cmlmovieclip_internal::_onUpdate(); 
    124126        } 
  • as3/CannonML/trunk/src/org/si/cml/extensions/framework/modules/CMLMovieClipControl.as

    r4456 r4539  
    101101        { 
    102102            initialize(); 
    103             appendArrowKeys(); 
    104             appendNumKeys(); 
    105             appendWSAD(); 
    106             appendButtons(["Z","N","CONTROL"], ["X","M","SHIFT"], ["C",","], ["V","."]); 
     103            mapArrowKeys(); 
     104            mapNumKeys(); 
     105            mapWSAD(); 
     106            mapButtons(["Z","N","CONTROL"], ["X","M","SHIFT"], ["C",","], ["V","."]); 
    107107            instance = this; 
    108108        } 
     
    142142         */ 
    143143        public function map(buttonNumber:int, ...args) : CMLMovieClipControl 
    144         { 
    145             var codeList:Vector.<int> = _keyCode[buttonNumber]; 
    146             if (args.length == 1 && args[0] is Array) args = args[0]; 
    147             codeList.length = 0; 
    148             for (var i:int=0; i<args.length; i++) { 
    149                 if (args[i] is String) { 
    150                     if (args[i] in _keycode_map) { 
    151                         codeList.push(_keycode_map[args[i]]); 
    152                     } else { 
    153                         throw new Error("No keycode for String '" + args[i] + "'"); 
    154                     } 
    155                 } else { 
    156                     if (int(args[i]) > 0) codeList.push(int(args[i])); 
    157                 } 
    158             } 
    159             return this; 
    160         } 
    161          
    162          
    163         /** assign keycode to the BUTTON_NUMBER  
    164          *  @param buttonNumber button number to assign 
    165          *  @param args keycodes of assigning buttons 
    166          *  @return this instance 
    167          */ 
    168         public function append(buttonNumber:int, ...args) : CMLMovieClipControl 
    169144        { 
    170145            var codeList:Vector.<int> = _keyCode[buttonNumber]; 
     
    192167         *  @return this instance 
    193168         */ 
    194         public function appendArrowKeys(button0:Array=null, button1:Array=null, button2:Array=null, button3:Array=null) : CMLMovieClipControl 
    195         { 
    196             append(KEY_UP, "UP").append(KEY_DOWN, "DOWN").append(KEY_LEFT, "LEFT").append(KEY_RIGHT, "RIGHT"); 
    197             return appendButtons(button0, button1, button2, button3); 
     169        public function mapArrowKeys(button0:Array=null, button1:Array=null, button2:Array=null, button3:Array=null) : CMLMovieClipControl 
     170        { 
     171            map(KEY_UP, "UP").map(KEY_DOWN, "DOWN").map(KEY_LEFT, "LEFT").map(KEY_RIGHT, "RIGHT"); 
     172            return mapButtons(button0, button1, button2, button3); 
    198173        } 
    199174         
     
    206181         *  @return this instance 
    207182         */ 
    208         public function appendNumKeys(button0:Array=null, button1:Array=null, button2:Array=null, button3:Array=null) : CMLMovieClipControl 
    209         { 
    210             append(KEY_UP, "NUM8").append(KEY_DOWN, "NUM2").append(KEY_LEFT, "NUM4").append(KEY_RIGHT, "NUM6"); 
    211             return appendButtons(button0, button1, button2, button3); 
     183        public function mapNumKeys(button0:Array=null, button1:Array=null, button2:Array=null, button3:Array=null) : CMLMovieClipControl 
     184        { 
     185            map(KEY_UP, "NUM8").map(KEY_DOWN, "NUM2").map(KEY_LEFT, "NUM4").map(KEY_RIGHT, "NUM6"); 
     186            return mapButtons(button0, button1, button2, button3); 
    212187        } 
    213188         
     
    220195         *  @return this instance 
    221196         */ 
    222         public function appendWSAD(button0:Array=null, button1:Array=null, button2:Array=null, button3:Array=null) : CMLMovieClipControl 
    223         { 
    224             append(KEY_UP, "W").append(KEY_DOWN, "S").append(KEY_LEFT, "A").append(KEY_RIGHT, "D"); 
    225             return appendButtons(button0, button1, button2, button3); 
     197        public function mapWSAD(button0:Array=null, button1:Array=null, button2:Array=null, button3:Array=null) : CMLMovieClipControl 
     198        { 
     199            map(KEY_UP, "W").map(KEY_DOWN, "S").map(KEY_LEFT, "A").map(KEY_RIGHT, "D"); 
     200            return mapButtons(button0, button1, button2, button3); 
    226201        } 
    227202         
     
    234209         *  @return this instance 
    235210         */ 
    236         public function appendButtons(button0:Array=null, button1:Array=null, button2:Array=null, button3:Array=null) : CMLMovieClipControl 
    237         { 
    238             append(KEY_BUTTON0, button0); 
    239             append(KEY_BUTTON1, button1); 
    240             append(KEY_BUTTON2, button2); 
    241             append(KEY_BUTTON3, button3); 
     211        public function mapButtons(button0:Array=null, button1:Array=null, button2:Array=null, button3:Array=null) : CMLMovieClipControl 
     212        { 
     213            map(KEY_BUTTON0, button0); 
     214            map(KEY_BUTTON1, button1); 
     215            map(KEY_BUTTON2, button2); 
     216            map(KEY_BUTTON3, button3); 
    242217            return this; 
    243218        }