2012-05-25 2 views
1

나는 액션 스크립트 자루 게임이 있습니다. 페이지가로드 될 때 현재 자루에 추가가 비활성화되고 새 가방에 추가가 클릭 될 때 활성화되어야합니다 이미지 표시가 현재의 가방에 추가 할작업 스크립트에서 스크립트가 처음 실행될 때 버튼을 비활성화하는 방법

enter image description here

가 처음으로 새 가방에 추가 누른 후 비활성해야한다 액션 스크립트 내가 baging 게임을 위해 사용하고있는 코드는 다음이 활성화가되어야입니다

package { 
import com.greensock.loading.LoaderMax; 
import com.greensock.loading.XMLLoader; 
import com.greensock.loading.ImageLoader; 

import com.greensock.TimelineLite; 
import com.greensock.TweenMax; 

import com.greensock.events.LoaderEvent; 

import com.greensock.plugins.TweenPlugin; 
import com.greensock.plugins.GlowFilterPlugin; 
import com.greensock.plugins.BlurFilterPlugin; 

import appkit.responders.NResponder; 

import bdesignet.utilities.keepRatio; 

import flash.display.MovieClip; 
import flash.display.StageAlign;  
import flash.display.StageScaleMode; 

import flash.display.BitmapData; 
import flash.display.Bitmap; 

import flash.net.URLRequest; 
import flash.net.navigateToURL; 

import flash.events.MouseEvent; 
import flash.events.TimerEvent; 

import flash.utils.Timer; 

public class main extends MovieClip { 
    private var _controlsTimeline:TimelineLite = new TimelineLite({ paused:true, onComplete:startGame }); 
    private var _scoreTimeline:TimelineLite = new TimelineLite({ paused:true, onComplete:enableReplay, onReverseComplete:startGame }); 

    private var _loadermainXML:XMLLoader = new XMLLoader("", { name:"mainXML", onComplete:onmainDataLoaded }); 

    private var _files:LoaderMax; 

    private var _glowCurrentBag:TweenMax; 
    private var _glowNewBag:TweenMax; 
    private var _glowReplay:TweenMax; 

    private var _glowPicture:TweenMax; 

    private var _xmlData:XML; 

    private var _currentBagClicked:NResponder; 
    private var _newBagClicked:NResponder; 

    private var _replayOver:NResponder; 
    private var _replayOut:NResponder; 
    private var _replayClicked:NResponder; 

    private var _currentItem:uint = 0; 
    private var _currentBag:uint = 0; 
    private var _currentBagItems:uint = 0; 
    private var _currentBagType:String = ""; 
    private var _points:int = 0; 

    private var _image:Bitmap = new Bitmap(); 

    private var _started:Boolean = false; 

    private var _start:Date; 
    private var _end:Date; 

    private var _hours:Number = new Number; 
    private var _minutes:Number = new Number; 
    private var _seconds:Number = new Number; 
    private var _totalTime:Number = new Number; 

    private var _counterTimer:Timer = new Timer(1000); 
    private var _counterTimerEvent:NResponder; 

    TweenPlugin.activate([GlowFilterPlugin, BlurFilterPlugin]); 

    public function main():void { 
     score.alpha = 0; 

     stage.align = StageAlign.TOP_LEFT; 
     stage.scaleMode = StageScaleMode.NO_SCALE; 

     _loadermainXML.url = "items.xml"; 

     _loadermainXML.load(); 
    } 
    private function onmainDataLoaded(event:LoaderEvent):void { 
     _xmlData = XML(_loadermainXML.content); 

     _files = new LoaderMax({ name:"files", onComplete:onFilesLoaded, onProgress:onFilesProgress }); 

     _glowCurrentBag = TweenMax.to(controls.addCurrentBag, 1, { glowFilter: { color:0xF7E9CF, alpha:.8, blurX:16, blurY:16 }, timeScale:2, paused:true }); 
     _glowNewBag = TweenMax.to(controls.addNewBag, 1, { glowFilter: { color:0xF7E9CF, alpha:.8, blurX:16, blurY:16 }, timeScale:2, paused:true }); 
     _glowReplay = TweenMax.to(score.replay, 1, { glowFilter: { color:0x695532, alpha:.8, blurX:16, blurY:16 }, timeScale:2, paused:true }); 

     _glowPicture = TweenMax.to(_image, 1, { blurFilter: { blurX:20, blurY:20 }, alpha:0, timeScale:2, paused:true, onComplete:showItem, onReverseComplete:enableClicks }); 

     for (var i:uint = 0; i < _xmlData.images.image.length(); i++) { 
      _files.append(new ImageLoader([email protected] + _xmlData.images.image[i][email protected], { name:"image_" + i })); 
     } 
     _files.load(); 


    } 
    private function onFilesProgress(event:LoaderEvent):void { 
     loader.value_txt.text = String(Math.round(event.target.progress * 100)) + " %"; 
    } 
    private function onFilesLoaded(event:LoaderEvent):void { 
     controls.numberBags.numberBags_txt.text = String(_currentBag); 
     controls.remainingText.value_txt.text = String(_xmlData.images.image.length() - 1); 

     _replayOver = NResponder.addNative(score.replay, MouseEvent.MOUSE_OVER, onOverReplay); 
     _replayOut = NResponder.addNative(score.replay, MouseEvent.MOUSE_OUT, onOutReplay); 
     _replayClicked = NResponder.addNative(score.replay, MouseEvent.CLICK, onClickedReplay); 
     _replayClicked.paused = true; 
     _replayOver.paused = true; 
     _replayOut.paused = true; 

     NResponder.addNative(controls.addCurrentBag, MouseEvent.MOUSE_OVER, onOverCurrentBag); 
     NResponder.addNative(controls.addCurrentBag, MouseEvent.MOUSE_OUT, onOutCurrentBag); 
     _currentBagClicked = NResponder.addNative(controls.addCurrentBag, MouseEvent.CLICK, onClickedCurrentBag); 
     _currentBagClicked.paused = true; 

     NResponder.addNative(controls.addNewBag, MouseEvent.MOUSE_OVER, onOverNewBag); 
     NResponder.addNative(controls.addNewBag, MouseEvent.MOUSE_OUT, onOutNewBag); 

     _newBagClicked = NResponder.addNative(controls.addNewBag, MouseEvent.CLICK, onClickedNewBag); 
     _newBagClicked.paused = true; 

     controls.addCurrentBag.buttonMode = true; 
     controls.addNewBag.buttonMode = true; 

     NResponder.addNative(score.emailLink, MouseEvent.CLICK, onLinkClick); 
     score.emailLink.buttonMode = true; 

     imageContainer.addChild(_image); 

     _counterTimerEvent = NResponder.addNative(_counterTimer, TimerEvent.TIMER, onCounterTimer); 
     _counterTimerEvent.paused = true; 

     _controlsTimeline.append(TweenMax.to(loader, 1, { alpha:0, timeScale:2 })); 
     _controlsTimeline.append(TweenMax.to(controls.addCurrentBag, 1, { alpha:1, x:237, timeScale:2 })); 
     _controlsTimeline.append(TweenMax.to(controls.addNewBag, 1, { alpha:1, x:237, timeScale:2 }), -0.5); 
     _controlsTimeline.append(TweenMax.to(controls.currentBag, 1, { alpha:1, y:280, timeScale:2 })); 
     _controlsTimeline.append(TweenMax.to(controls.numberBags, 1, { alpha:1, y:280, timeScale:2 }), -0.5); 
     _controlsTimeline.append(TweenMax.to(controls.remainingText, 1, { alpha:1, timeScale:2 })); 
     _controlsTimeline.append(TweenMax.to(controls.timeText, 1, { alpha:1, timeScale:2 })); 

     _scoreTimeline.append(TweenMax.to(controls.timeText, 1, { alpha:0, timeScale:2 })); 
     _scoreTimeline.append(TweenMax.to(controls.remainingText, 1, { alpha:0, timeScale:2 })); 
     _scoreTimeline.append(TweenMax.to(controls.numberBags, 1, { alpha:0, y:416, timeScale:2 })); 
     _scoreTimeline.append(TweenMax.to(controls.currentBag, 1, { alpha:0, y:416, timeScale:2 }), -0.5); 
     _scoreTimeline.append(TweenMax.to(controls.addNewBag, 1, { alpha:0, x:467, timeScale:2 })); 
     _scoreTimeline.append(TweenMax.to(controls.addCurrentBag, 1, { alpha:0, x:467, timeScale:2 }), -0.5); 
     _scoreTimeline.append(TweenMax.from(score, 1, { blurFilter: { blurX:20, blurY:20 }, alpha:0, timeScale:2 })); 
     _scoreTimeline.append(TweenMax.to(score, 1, { alpha:1, timeScale:2 }), -0.5); 

     _controlsTimeline.play(); 
    } 
    private function onLinkClick(e:MouseEvent):void { 
     var request:URLRequest = new URLRequest("mailto:[email protected]" + "?subject=Score&body=Score%20:%20" + _points + "\nDate%20:%20" + (_end.month + 1) + "/" + _end.date + "/" + _end.fullYear); 
     //trace(request.url); 
     navigateToURL(request, "_blank"); 
    } 
    private function onCounterTimer(e:TimerEvent):void { 
     _end = new Date(); 
     controls.timeText.value_txt.text = returnTimeString(Math.round((_end.time - _start.time)/1000)); 
    } 
    private function startGame():void { 

     _start = new Date(); 

     _counterTimerEvent.paused = false; 
     _counterTimer.start(); 

     _currentItem = 0; 
     _points = 0; 
     _currentBag = 0; 
     _currentBagItems = 0; 

     _currentBagType = _xmlData.images.image[0][email protected]_type; 

     showItem(); 

     !_started ? (TweenMax.from(_image, 1, { blurFilter: { blurX:20, blurY:20 }, alpha:0, onComplete:enableClicks }), _started = true):void; 
    } 
    private function onOverReplay(e:MouseEvent):void { 
     _glowReplay.play() 
    } 
    private function onOutReplay(e:MouseEvent):void { 
     _glowReplay.reverse(); 
    } 
    private function onClickedReplay(e:MouseEvent):void { 
     _replayClicked.paused = false; 
     _replayOver.paused = false; 
     _replayOut.paused = false; 

     controls.numberBags.numberBags_txt.text = 0; 
     controls.remainingText.value_txt.text = String(_xmlData.images.image.length() - 1); 
     controls.currentBag.currentItems_txt.text = ""; 

     controls.timeText.value_txt.text = "00:00"; 

     _scoreTimeline.reverse(); 
    } 
    private function onOverCurrentBag(e:MouseEvent):void { 
     _glowCurrentBag.play(); 
    } 
    private function onOutCurrentBag(e:MouseEvent):void { 
     _glowCurrentBag.reverse(); 
    } 
    private function onClickedCurrentBag(e:MouseEvent):void { 
     _xmlData.images.image[_currentItem][email protected]_type != _currentBagType ? _points-=2 : _points+=2; 

     _currentBagItems > 0 ? controls.currentBag.currentItems_txt.appendText(", ") : controls.currentBag.currentItems_txt.text = ""; 
     controls.currentBag.currentItems_txt.appendText(_xmlData.images.image[_currentItem][email protected]); 
     _currentBagItems++; 
     nextItem(); 
    } 
    private function onOverNewBag(e:MouseEvent):void { 
     _glowNewBag.play(); 
    } 
    private function onOutNewBag(e:MouseEvent):void { 
     _glowNewBag.reverse(); 
    } 
    private function onClickedNewBag(e:MouseEvent):void { 
     _xmlData.images.image[_currentItem][email protected]_type != _currentBagType ? _points++ : _points--; 

     _currentBagType = _xmlData.images.image[_currentItem][email protected]_type; 
     _currentBagItems = 1; 
     _currentBag++; 
     controls.numberBags.numberBags_txt.text = String(_currentBag); 
     controls.currentBag.currentItems_txt.text = _xmlData.images.image[_currentItem][email protected]; 

     nextItem(); 
    } 
    private function nextItem():void { 
     _currentItem++; 

     _currentBagClicked.paused = true; 
     _newBagClicked.paused = true; 

     _glowPicture.restart(); 
    } 
    private function enableReplay():void { 
     _replayClicked.paused = false; 
     _replayOver.paused = false; 
     _replayOut.paused = false; 

     score.replay.buttonMode = true; 

    } 
    private function enableClicks():void { 
     _currentBagClicked.paused = false; 
     _newBagClicked.paused = false; 
    } 
    private function showItem():void { 
     if (_currentItem < _xmlData.images.image.length()) { 
      controls.remainingText.value_txt.text = String(_xmlData.images.image.length() - (_currentItem + 1)); 

      _image.bitmapData = LoaderMax.getLoader("image_" + _currentItem).rawContent.bitmapData; 

      keepRatio.findValues(_image.height, _image.width, 268, 390, true); 

      _image.x = keepRatio.newX; 
      _image.y = keepRatio.newY; 
      _image.height = keepRatio.newHeight; 
      _image.width = keepRatio.newWidth; 
      _glowPicture.currentProgress == 1 ? _glowPicture.reverse() : null; 
     }else { 
      //_end = new Date(); 

      _counterTimerEvent.paused = true; 
      _counterTimer.stop(); 

      score.text.total_txt.text = String([email protected]_score); 
      score.text.value_txt.text = String(_points); 
      score.timeText.value_txt.text = returnTimeString(Math.round((_end.time - _start.time)/1000)); 

      _scoreTimeline.play(); 
     } 
    } 
    public function returnTimeString($val:Number):String{ 
     _hours = Math.floor($val/3600); 
     _minutes = Math.floor($val/60); 
     _seconds = Math.floor($val-(_minutes*60)); 
     return (_hours > 0 ? String(_hours) + ':' : '') + (_minutes > 9 ?  String(_minutes) : '0' + String(_minutes)) + ':' + (_seconds > 9 ? String(_seconds) : '0' + String(_seconds)); 
    } 
} 

}

답변

0

현재 bag에 add에 eventListener를 즉시 추가하지 마십시오. 부울을 만듭니다 (즉, newBagPressed = false). When 새 가방에 담기을 누르면 부울을 테스트합니다. false 인 경우 true로 설정하고 eventListener를 에 추가합니다. 현재 가방에 추가합니다.

희망이 도움이 :)

+0

당신이 나를 더 설명하거나 내가 액션 스크립트 덕분에 새로운 오전하시기 바랍니다 몇 가지 코드를 편집 할 수 있습니다 – james

관련 문제