OSDN Git Service

FreeITemClassの実装をまともに。(Intervalを指定しなくても二重にcallbackが実行されないようにした)
authorttwilb <ttwilb@users.sourceforge.jp>
Wed, 28 Aug 2013 12:55:33 +0000 (21:55 +0900)
committerttwilb <ttwilb@users.sourceforge.jp>
Wed, 28 Aug 2013 12:55:33 +0000 (21:55 +0900)
いまのところ、userControlledCharacterのみ対応

www/corelib/classes/FreeItemClass.js

index 228f7ac..c222ccf 100644 (file)
@@ -15,7 +15,7 @@ var FreeItemClass = function(stage, args){
        
        //\8dÅ\8cã\82É\83L\83\83\83\89\82É\8fæ\82ç\82ê\82Ä\82¢\82é\8fó\91Ô\82Å\82È\82­\82È\82Á\82Ä\82©\82ç\89½tick\82Å\8dÄ\82Ñ\8eæ\93¾\82Å\82«\82é\82©\81B
        //\82 \81A\88ê\89\9e\81BPCDSL\82©\82ç\8ae\83v\83\8d\83p\83e\83B\82ð\8ew\92è\82·\82é\95û\96@\82ª\82 \82é\82Ì\82Å\88ø\90\94\82É\97p\88Ó\82·\82é\95K\97v\82Í\82 \82è\82Ü\82¹\82ñ\81B
-       this.touchInterval = 1000;
+       this.touchInterval = 0;
        this.lastTouchedTickCount = -9999;
        
        //\8c»\8dÝ\8fã\82É\82©\82Ô\82³\82Á\82Ä\82¢\82é\89Â\94\\90«\82Ì\82 \82é\83L\83\83\83\89
@@ -24,6 +24,7 @@ var FreeItemClass = function(stage, args){
        this.debugMode = false;
        
        this.isDisabled = false;
+       this.isTouching = false;
 
 }.extend(ItemClass, {
        draw: function(x, y){
@@ -49,31 +50,48 @@ var FreeItemClass = function(stage, args){
        },
        tick: function(){
                
-       },
-       objectAttacked : function(obj, obj_x, obj_y)
-       {
-               
-               var tickCount = this.ownerStage.manager.tickCount;
-               if(!this.isDisabled && tickCount - this.lastTouchedTickCount >= this.touchInterval)
+               if(this.ownerStage.userControlledCharacter)
                {
-                       if(this.callback)
+                       var main = this.ownerStage.userControlledCharacter;
+                       if(this.isOverlappedWithLocatedObject(main, main.origin.x, main.origin.y))
                        {
-                               this.callback(obj, obj_x, obj_y);
-                       }
-                       
-                       if(this.times > 0)
-                       {
-                               this.times--;
-                               if(this.times == 0)
+                               //\8eå\90l\8cö\82ª\82¢\82Ü\8e©\95ª(FreeItem)\82Æ\90Ú\82µ\82Ä\82¢\82é
+                               if(!this.isTouching)
                                {
-                                       this.ownerStage.removeStageObject(this);
-                                       this.isDisabled = true;
+                                       this.isTouching = true;
+                                       var tickCount = this.ownerStage.manager.tickCount;
+                                       if(!this.isDisabled && tickCount - this.lastTouchedTickCount >= this.touchInterval)
+                                       {
+                                               if(this.callback)
+                                               {
+                                                       this.callback(main,0,0);
+                                               }
+                                               
+                                               if(this.times > 0)
+                                               {
+                                                       this.times--;
+                                                       if(this.times == 0)
+                                                       {
+                                                               this.ownerStage.removeStageObject(this);
+                                                               this.isDisabled = true;
+                                                       }
+                                               }
+                                               //\8dÅ\8cã\82É\90G\82ç\82ê\82½\8e\9e\8aÔ\82ð\8bL\98^
+                                               this.lastTouchedTickCount = tickCount;
+                                       }
                                }
+                       }else
+                       {
+                               this.isTouching = false;
                        }
-                       //\8dÅ\8cã\82É\90G\82ç\82ê\82½\8e\9e\8aÔ\82ð\8bL\98^
-                       this.lastTouchedTickCount = tickCount;
                }
-
+       },
+       /*
+       
+       // ????
+       
+       objectAttacked : function(obj, obj_x, obj_y)
+       {
                //this.collidedList\82É\90G\82ç\82ê\82Ä\82¢\82é\89Â\94\\90«\82Ì\82 \82é\83L\83\83\83\89\92Ç\89Á\8f\88\97\9d
                for(var i = 0; i < this.collidedList; i++)
                {
@@ -85,8 +103,9 @@ var FreeItemClass = function(stage, args){
                
                //this.collidedList\82É\82Ü\82¾\92Ç\89Á\82³\82ê\82Ä\82¢\82È\82¢
                this.collidedList.push(obj);
-               
        }
+       
+       */
 
 });
 FreeItemClass.tick = function(){return false;};