2013-05-25 1 views
1

우리는 대학 시험을위한 프로토 타입을 개발하고 있습니다. FLASH CS6 및 AS3을 사용하고 있습니다.액션 스크립트 3 - 다른 프레임 사이에 무비 클립 "상태"저장

우리는 병원의 음식 서비스를 관리하기위한 장치를 만들고 있지만 음식 선택 버튼과 상대적인 상태를 처리하는 데 문제가 발생했습니다. 선택 될 수있는 모든 음식을하지만, 우리는 다른 프레임에 갈 때 우리는 선택을 잃게 메뉴의 다른 페이지 사이를 전환 할 수 :

우리는 버튼과 같은 몇 가지 무비 클립 (다운, 비활성화 및 선택 모든 무비 클립은 3 개 주를 가지고)가 이전 페이지에서 ...

다른 페이지로 전환 할 때 어떻게 영화 클립의 상태를 저장할 수 있습니까?

도움 주셔서 감사합니다.

+2

MovieClips 대신 SimpleButton을 사용하면 AS3에서 버튼의 상태를 기억하게하는 상태 속성이 있습니다. – adaam

답변

0

정보를 추적하기 위해 문서 클래스에 설명하는 것과 같은 데이터를 저장하는 것이 일반적으로 좋습니다. Framescript를 사용해야하는 경우 일반적으로 타임 라인 이벤트, MovieClip 이벤트 리스너 및 상태 변경과 같은 문서 클래스/다른 클래스에서 합리적으로 수행 할 수없는 작업으로 제한되어야합니다.

가장 쉬운 접근 방법은 음식 선택을 저장하는 클래스와이 데이터를 설정하고 검색 할 수있는 함수를 사용하는 것입니다. 그런 다음 단추의 인스턴스를로드 할 때 클래스에 저장된 데이터를 사용하여 단추의 상태를 설정합니다.

단일 플래그 부울을 사용하여 단순화 된 예제입니다. XML, 배열 또는 사용자 지정 개체와 같은 다른 시스템을 저장소에 사용하는 것이 좋습니다. 이 경우 클래스 함수를 변경하여 작업 할 수있는 모든 항목이 작동하게하려는 것입니다.

package 
{ 
    public class food 
    { 
     var pizza:Boolean = false; 

     public function addFood():void 
     { 
      pizza = true; 
     } 

     public function removeFood():void 
     { 
      pizza = false; 
     } 

     public function checkFood():Boolean 
     { 
      return pizza; 
     } 
    } 
} 

그렇다면, 당신은 아마 당신의 무대에 배치 될 것입니다 귀하의 버튼의 상태를 설정하는 기능을 가질 수있다. MovieClips를 사용하고 있기 때문에 다른 주마다 다른 프레임이 있다고 가정합니다. "1"이 선택 해제되어 있고 "2"가 선택되어 있고 MovieClip이 "pizzaButton"이라고 가정합니다.

이번에도이 기능을 확장하여 하나의 버튼이 아닌 여러 버튼에서 작업 할 수 있습니다.

import food; 
function updateButton():void 
{ 
    var flag:Boolean = food.checkFood(); 
    if(flag) 
    { 
     pizzaButton.gotoAndStop(2); 
    } 
    else 
    { 
     pizzaButton.gotoAndStop(1); 
    } 
} 

은 BTW, adaam는 의견에 절대적으로 올바른 것입니다. SimpleButton은 MovieClips보다이 목적을 위해 더 잘 작동 할 수 있습니다. 그러나 버튼의 특성에 따라 다릅니다. 나는 그것을 들여다 볼 것이다. 이 메서드는 대부분 SimpleButtons에서 작동하지만 코드가 프레임 대신 객체의 상태를 변경한다는 점이 다릅니다.

관련 문제