2013-09-08 5 views
0

에는 WebView가있는 여러보기가 있습니다. coverFlowView에서 만들어야합니다. 그게 내가 내 viewImage, coverFlow에 넣어,하지만 문제는 내가 webView로드되지 않은 이미지를 얻을 수있다 ... 나는 setTimeout 만들려고했지만 도움이되지 않습니다.티타늄 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

당신은 일 길을 잘못 주문하고, 당신은 또한 당신이보기의 잘못된 유형에 load 이벤트 listeneing되어, 여러 구문 오류를 가지고, 당신은 웹보기에 listeneing 될 놈이야, 대신이 시도 :

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

표시되는 컨테이너에 webviews를 추가해야 할 수도 있습니다. 그렇지 않으면로드되지 않습니다. 내 게시물 수정 됨 –