coverFlowView上的Titanium WebView.toImage

时间:2013-09-08 07:55:32

标签: webview titanium coverflow

A有多个WebView视图。我需要在coverFlowView中创建它。为此我将我的视图设为图像,放在coverFlow之后,但问题是我得到的图像没有加载webView ...我试图制作setTimeout,但它没有帮助。

var cover = Titanium.UI.iOS.createCoverFlowView({
    images: forflowImages
});
for (var k = start; k < cData.length; k++) {
r = Ti.UI.createView({});
for (var j = 0; j < child.objects.length; j++) {
    tmp = Ti.UI.createWebView({
        left : 10,
        top : 10,
        right : 10,
        bottom : 10,
        width : Ti.UI.FILL,
            height : Ti.UI.SIZE,
        willHandleTouches: true,
        backgroundColor : '#fff2df',
    });
    tmp.html = obj.html;
    no.add(tmp);
    r.add(no);
    }
}
r.addEventListener("load", function(e) {
        blob = r.toImage();
    });
    forflowImages.push(blob);   
}
cover.setImages(forflowImages); 

使用此代码,coverFlowView没有任何视图。

setTimeout(function() {
        blob = r.toImage();
    }, 500);

也没有帮助,我在页面上保存了活动指示,内容似乎没有时间加载到图像功能之前。

1 个答案:

答案 0 :(得分:0)

您订购的内容方式错误,并且您有多个语法错误,而且您正在侦听错误类型的视图上的load事件,您应该在WebView上进行监听,请尝试以下方法:< / p>

var forflowImages = [];
var container = // This should already be in the view stack somewhere
var cover = Titanium.UI.iOS.createCoverFlowView();
function loadListener(e) {
    forflowImages.push(e.source.toImage()); 
    if(forFlowImages.length == child.objects.length) {
        // We have all the images for cover flow
        cover.setImages(forflowImages);
    }
}

var containerView = Ti.UI.createView();
for (var j = 0; j < child.objects.length; j++) {
    var tmp = Ti.UI.createWebView({html : obj.html);
    tmp.addEventListener("load", loadListener);
    container.add(tmp);
    tmp.repaint();
}

我删除了一些在语法上不正确的代码并将其修剪下来,因此很容易理解。所有这些代码都是添加一个事件监听器来处理webview到图像的转换。