2011-05-06 9 views
1

here에서 BulkLoader 클래스로 이미지 파일을로드하는 슬라이드 쇼가 있습니다. 첫 번째 이미지가 완전히로드되면, 그것은 무대에 추가 할 수있는 무비 클립 컨테이너에 추가됩니다 .. 그것은 전체 화면으로 표시됩니다,하지만 버튼을 클릭 할 경우에만 :as3 버튼을 클릭 할 때까지 이미지가로드 될 때까지 대기

fullScreenButton.addEventListener(MouseEvent.CLICK, showFull); 

function showFull(e:MouseEvent):void { 
    stage.addChild(mcSlideHolder); 
    ... 
} 

는에 BulkLoader로 이미지를로드

imageLoader = new BulkLoader("imgLoader"); 
imageLoader.add(new URLRequest(paths[0]), {id:"slide_0});         
imageLoader.get("slide_0).addEventListener(Event.COMPLETE, onFirstSlideLoaded); 
imageLoader.start(1); 

그리고로드 과정 : 처음부터 호출되는 별도의 기능 loadAllSlides는()

function onFirstSlideLoaded(e:Event):void 
{ 
    firstImage = imageLoader.getBitmap(e.currentTarget.id); 
    currentImage.addChild(firstImage); 
    mcSlideHolder.addChild(currentImage); 
    mcSlideHolder.dispatchEvent(new Event("firstImgAdd")); 
} 

이것은 fullScree하지 않는 한 잘 작동 이미지가 완전히로드되기 전에 nButton을 클릭하면 아무 것도 볼 수 없습니다. showFull()을 호출하는 버튼 클릭 이벤트를 얻으려면 어떻게해야합니까? 이미지가 컨테이너에로드되거나 추가 될 때까지 대기하거나 어떻게 다시 추가 할 수 있습니까? 가능한/최선의 접근 방식은 무엇입니까?

fullScreenButton을 클릭 할 때 컨테이너에 이미지를 다시 추가하는 사용자 지정 이벤트 인 "firstImgAdd"를 전달하려고했지만 try/catch 블록 또는 간단한 if 조건에도 불구하고 아무 것도 작동하지 않았습니다. 버튼을 너무 일찍 클릭하면 이미지로드가 완료된 후 컨테이너에 이미지가 추가되지 않습니다. 어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.

+1

Flash Player의 실제 전체 화면 모드에 대해 이야기하고 있습니까? 표시된 코드에서 버튼 클릭시 전체 화면으로 이동하지 않은 이유를 상상할 수 없으며로드가 완료되면 이미지가 표시됩니다. 클릭 후 전체 화면을 연기하는 방법을 묻고 있습니까? 그렇다면 그렇게 할 수 없습니다. Flash Player 보안 제한 사항에서는 호출 전체 화면으로 이동하려면 호출 스택에서 mouseEvent 또는 keyboardEvent 핸들러를 호출해야합니다. –

+1

예, 물론 : 실제 플래시의 전체 화면 모드에 대한 것입니다. "std.displayState = StageDisplayState.FULL_SCREEN;"과 함께 전체 화면 모드를 호출 한 후 mcSlideHolder를 추가하는 코드를 작성했습니다. 그러나 여전히 성공하지 못했습니다.아니요, 전체 화면 실행을 연기하고 싶지 않습니다. 백그라운드에서로드되는 이미지가로드를 완료 할 때까지 기다렸다가 볼 수 있도록 스테이지에 추가합니다. – hajn

답변

1

아마도로드를 완료 할 때까지 버튼을 사용할 수 없게하거나 사용할 수 없도록 설정하는 것이 가장 좋습니다. 다른 옵션은로드가 완료되지 않은 경우 요청에 큐를 보내는 것입니다. 같은

뭔가 :

private var slideLoaded:Boolean = false; 
private var requestCued:Boolean = false; 

imageLoader = new BulkLoader("imgLoader"); 
imageLoader.add(new URLRequest(paths[0]), {id:"slide_0"});         
imageLoader.get("slide_0").addEventListener(Event.COMPLETE, onFirstSlideLoaded); 
imageLoader.start(1); 

fullScreenButton.addEventListener(MouseEvent.CLICK, showFull); 

function showFull(e:MouseEvent):void { 
    if (slideLoaded) 
     stage.addChild(mcSlideHolder); 
    else 
     requestCued = true; 
} 

function onFirstSlideLoaded(e:Event):void { 
    slideLoaded = true; 
    firstImage = imageLoader.getBitmap(e.currentTarget.id); 
    currentImage.addChild(firstImage); 
    mcSlideHolder.addChild(currentImage); 
    if (requestCued) 
     stage.addChild(mcSlideHolder); 
} 
+0

이미지가로드 될 때까지 버튼을 비활성화하는 것은 옵션입니다. (그리고 효과가 있지만) 사용자 경험을 고려하여 선호하는 것이 아닙니다. 사용자의 인터넷 연결 속도와 파일 크기에 따라로드가 완료 될 때까지 어느 정도 시간이 걸릴 수 있습니다. 버튼을 활성화하고 기다리는 것이 좋습니다 이미지가 표시 될 때까지 원/애니메이션을 사용하십시오 .. – hajn

0

이 보안 위반입니다.
사용자 개입없이 전체 화면 모드를 인스턴스화 할 수 없습니다.

전체 화면을 활성화 할 수있는 유일한 방법은 그것을 이런 식으로
봐를 클릭하여 사용자 상호 작용 period.IE:a 마우스에서 바로, 방법이 자신의 광고를 전체 화면으로 볼 수있는 사용자를 강제하지하려고 어떤 해커 사용자가 전체 화면을 종료했기 때문에 해커가 방금 다시 열 수있었습니다.

사용자 상호 작용없이 전체 화면을 볼 수있는 가장 가까운 방법은 SWF를 HTML 문서의 전체 크기로 확장하는 것입니다.

버블을 일으키기 위해 미안합니다. 나 자신도이 문제를 해킹하려고했습니다. 실제 사용자 클릭 이벤트가 전체 화면으로 이동하려면 스택에 있어야합니다.

+0

아니요, 문제가 아닙니다. 전체 화면으로 이동하기 전에 필요한 사용자 상호 작용에 대해 알고 있습니다. 버튼을 클릭했을 때만 전체 화면 모드가 활성화됩니다. 이미지가 완전히로드되기 전에 전체 화면으로 이동 버튼을 클릭하면 이미지가 보이지 않습니다. – hajn

관련 문제