as3等到按钮点击后加载图像

时间:2011-05-06 14:51:19

标签: flash actionscript-3 event-handling bulkloader

我有一个幻灯片,可以使用here中的BulkLoader类加载图像文件。完全加载第一个图像后,它会被添加到MovieClip容器中以将其添加到舞台上......并且它会全屏显示,但仅当单击一个按钮时才会显示:

fullScreenButton.addEventListener(MouseEvent.CLICK, showFull);

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

使用BulkLoader将图像加载到一个单独的函数loadAllSlides()中,该函数从一开始就被调用:

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条件但没有一个工作,这意味着图像在太早点击按钮完成加载后,不会将其添加到容器中。 感谢任何帮助,提前谢谢

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

这是违反安全规定的行为 没有用户交互,您无法实例化全屏模式。

激活全屏的唯一方法是直接来自用户交互期.IE:鼠标点击
以这种方式看待,任何黑客试图强迫用户观看他们的广告全屏而没有出路,因为用户关闭全屏幕的黑客可能只是重新打开它。

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

对不起爆破你的泡沫我自己也试图破解这个。实际的用户点击事件必须在堆栈中才能让您全屏显示