1

我有一个幻灯片,可以从这里加载带有 BulkLoader 类的图像文件。当第一个图像完全加载后,它会被添加到 MovieClip 容器中以将其添加到舞台......并且它会全屏显示,但前提是单击按钮:

fullScreenButton.addEventListener(MouseEvent.CLICK, showFull);

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

在一个单独的函数 loadAllSlides() 中使用 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);

在加载过程中:

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

除非在完全加载图像之前单击 fullScreenButton,否则这工作正常,那么当然什么都看不到。如何获取调用 showFull() 的按钮单击事件以等待图像加载/添加到容器中,或者如何再次添加它?什么是可能的/最好的方法?

我尝试调度一个自定义事件“firstImgAdd”,当单击 fullScreenButton 时将图像再次添加到容器中,以及使用 try/catch 块甚至是简单的 if 条件,但它们都不起作用,这意味着图像没有得到过早单击按钮时,在完成加载后添加到容器中。任何帮助表示赞赏,在此先感谢

4

2 回答 2

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);
}
于 2011-05-06T15:35:07.640 回答
0

这是违反安全规定的。
您不能在没有用户交互的情况下实例化全屏模式。

激活全屏的唯一方法是直接从用户交互期间。IE:鼠标单击
这样看,任何黑客都试图强迫用户全屏观看他们的广告而没有出路,因为用户关闭了全屏黑客可以重新打开它。

在没有用户交互的情况下最接近全屏的方法是将 SWF 扩展为 HTML 文档的完整大小。

很抱歉打破你的泡沫,我自己也试图解决这个问题。实际的用户点击事件必须在堆栈中才能全屏显示

于 2011-05-06T18:36:38.607 回答