2013-09-08 1 views
0

A есть несколько видов с помощью WebViews на них. Мне нужно сделать это в coverFlowView. Для этого я делаю свои представления toImage, чтобы поместить на coverFlow, но проблема в том, что я получаю изображения с webView не загружен ... Я пытался сделать setTimeout, но это не помогает.Titanium WebView.toImage on coverFlowView

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); 

Также не помогает, у меня есть индикатор активности на странице сохраненной, содержание, кажется, не было времени для загрузки, прежде чем функция toImage действовала.

ответ

0

Вы заказываете вещи неправильный путь, и у вас есть несколько синтаксических ошибок, также вы listeneing для load события на неправильный тип зрения, вы shold быть listeneing на WebView, попробуйте вместо этого:

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(); 
} 

Я удалил часть вашего кода, которая была синтаксически неправильной и обрезала ее, чтобы было легко понять. Весь этот код добавляет прослушиватель событий, который обрабатывает преобразование веб-представления в изображение.

+0

Кажется, решение не так уж плохо, но для меня eventListener не ловит событие «load» ... Попытка проверить, почему. – jagger

+0

, вам, вероятно, придется добавить веб-просмотры в отображаемый контейнер, иначе они никогда не будут загружаться. Отредактировано мое сообщение –