2010-02-28 2 views
0

웹 페이지에 표준 슬라이드 쇼 플래시 헤더를 작성하고 있습니다.AS3의 타임 라인에서 문서 클래스의 속성에 액세스하려면 어떻게해야합니까?

은 세 가지 주요 부분이 있습니다

  • 문서 클래스
  • 일부 연결 타임 라인 코드 프로젝트로 사용되는 슬라이드 쇼 클래스
  • 컨트롤러 클래스

    .

슬라이드 쇼 클래스에는 모든 기능이 있으므로 Document 클래스를 사용하여 슬라이드 쇼의 새 인스턴스를 만들고 슬라이드 쇼 인스턴스라는 참조를 유지하는 slideshow라는 속성 변수를 유지합니다.

import flash.display.MovieClip; 
import flash.events.Event; 

public class Header extends MovieClip 
{ 
    public var slideshow:Slideshow; 
    public function CSYC_Header() 
     { 
      var picturesURL:String = "images/pictures.xml"; 
      var picturesURLFVar:String = root.loaderInfo.parameters.pictures; 
      picturesURL = picturesURLFVar ? picturesURLFVar : picturesURL; 
      slideshow = new Slideshow(picturesURL, Slideshow.FADE);    
      slideshow.init(); 
      addChild(slideshow); 
     } 

    public function hello():void{trace("Hello");} 
} 

내 다음 단계는 지금 ​​slidshow.play() /를 호출, 자신의 클릭 이벤트를 몇 가지 놀이를 그리고 버튼을 중지 한 다음 링크의 Adobe Flash Professional을 사용하는 것입니다. 일시 정지(). 이 코드는 타임 라인에 배치되어 나를에도 불구하고

import flash.events.MouseEvent; 

pause_control_btn.addEventListener(MouseEvent.CLICK, pauseClicked); 
play_control_btn.addEventListener(MouseEvent.CLICK, playClicked); 
addChild(pause_control_btn); 
addChild(play_control_btn); 

function pauseClicked(e:MouseEvent):void 
{ 
    //the play and pause buttons are on the stage and have the following names as 
    // thier instance names: pause_control_btn, play_control_btn 
    pause_control_btn.alpha = 0; 
    play_control_btn.alpha = 0.37; 
    slideshow.pause(); 
} 

function playClicked(e:MouseEvent):void 
{ 
    pause_control_btn.alpha = 0.37; 
    play_control_btn.alpha = 0; 
    slideshow.play(); 
} 

내가 슬라이드 쇼를 말할 때, 나는 예를 들어, 다음과 같은 오류없이 속성을 호출 할 수 없습니다 타임 라인에서 문서 클래스에있는 일반 메소드를 호출 할 수있는 .play() :

1061: Call to a possibly undefined method play through a reference with static type com.example.test:Slideshow.

그래서 내가 뭔가를 분명 실종, 또는 내 문서 클래스에 내 문서 클래스에서 객체를 호출하는 이벤트를 연결 할 때마다하는 방법을해야 할 것이다?

답변

1

타임 라인의 버튼에 해당 코드를 삽입 할 필요는 없습니다. Document 클래스 내에서 인스턴스 이름을 사용하여 해당 객체를 참조 할 수 있습니다. 그게 가장 쉬운 해결책이 될거야, 타임 라인을 완전히 피하는 것 같아.

그렇지 않으면 parent.slideshow 또는 root.slideshow에 대한 호출이 가능합니다 (루트는 AS2이지만 생각지도 못했지만) 타임 라인에서 해당 인스턴스에 대한 액세스 권한을 부여합니다. 이전 옵션은 여전히 ​​더 나은 옵션이며 코드를 한 곳에서 유지합니다.

희망이 있습니다.

+0

위대한 포인트! 어제 밤에 잠을 잤고, 슬라이드 쇼 수업에서 오류가 발생했기 때문에 지금은 어리 석습니다. 결론적으로, 문서 클래스의 모든 내용과 문서 클래스의 타임 라인에있는 모든 것을 속성과 메서드처럼 액세스 할 수 있습니다.이 예제의 경우 타임 라인에서 slideshow.play()를 호출 할 수 있습니다 (필요한 메소드 추가 변경을 저장하는 것을 잊지 않는 경우 :)) 및 문서 클래스에서 pause_control_btn.addEventListener (MouseEvent.CLICK, pauseClicked)를 호출 할 수 있습니다. 도 마찬가지입니다. 모든 것이 작동합니다! – GitNick

+0

아, 그럼 그게 문제 였어요;) 내가해야했던 것보다 훨씬 '파일을 저장하지 못했습니다'문제가있었습니다! 다행스럽게도 다행스럽게도 타임 라인에서 문서 클래스의 내용에 액세스하는 것이 가능하다는 점을 잘 알고 있습니다. 정보 주셔서 감사합니다! – debu

관련 문제