【问题标题】:iOS - Titanium Appcelerator , Create a video gallery with previewiOS - Titanium Appcelerator,创建带有预览的视频库
【发布时间】:2014-08-20 20:57:40
【问题描述】:

我想做的是创建一个包含 n 视频的 视频库。 在一个 ScrollView 中添加 n 视图,为每个视频添加一个视图,并将相应视频中的图片加载到每个视图中(等待每个视频的加载)。在视图上按住 (TouchStart) 将在视图 (预览) 中加载视频的其他图像 (因此直接在迷你视图中显示视频预览) 直到松开手指 (touchEnd)。

到目前为止,还可以,我的问题是我想通过在迷你视图上按 (CLICK) 来全屏显示视频!

这是我的代码

//****************************************************************************************************************

    var arr_vidplayer_VARIE = [];
    var arr_vidplayer_VARIE_duration = [];
    var arr_vidplayer_VARIE_cont = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
    var timer_VARIE = null;

    var num_video_VARIE = 37;
    var arr_view_VARIE = [];
    var left_VARIE= -200;
    var top_VARIE = -100;
    var actual_video_VARIE = 1;

//****************************************************************************************************************

var win = Ti.UI.createWindow({
    backgroundColor : 'white',
    fullscreen : true
});


var scroll_VARIE = Ti.UI.createScrollView({
   width : 1024,
   height : 700,
   top : 0 
});

scroll_VARIE.addEventListener("scroll",function(e){
   clearInterval(timer_VARIE);
});

//****************************************************************************************************************

function START_VARIE(){

    if(actual_video_VARIE <= num_video_VARIE){

        if((actual_video_VARIE-1) %4 == 0){
            top_VARIE+=150;
            left_VARIE=45;
        }else{
            left_VARIE+=245;
        }

        CREATE_VIDEO_VARIE(top_VARIE,left_VARIE,actual_video_VARIE);

    }
}

function CREATE_VIDEO_VARIE(top,left,id){

    var myurl = "/video/"+id+".mov";

    var video = Titanium.Media.createVideoPlayer({
        url : myurl,
        mediaControlStyle : Titanium.Media.VIDEO_CONTROL_DEFAULT,
        scalingMode : Titanium.Media.VIDEO_SCALING_ASPECT_FILL,
        fullscreen : true,
        id : parseInt(id),
        autoplay : true,
        //zIndex : 9999999999999
        //visible : false
    });

    video.addEventListener("loadstate",function(e){
        END_LOAD_VARIE(e.source.id,e.loadState);
    });

    arr_vidplayer_VARIE.push(video);

    var view_video = Ti.UI.createView({
        width : 200,
        height : 120,
        left : left,
        top : top,
        id : parseInt(id),
        borderColor : "black"
    });

    view_video.addEventListener("touchstart",function(e){

       var i = parseInt(e.source.id) - 1; 

       timer_VARIE = setInterval(function(e){

            if(arr_vidplayer_VARIE_cont[i] < arr_vidplayer_VARIE_duration[i]){

                arr_vidplayer_VARIE_cont[i]++;
                var img = arr_vidplayer_VARIE[i].thumbnailImageAtTime(arr_vidplayer_VARIE_cont[i],Titanium.Media.VIDEO_TIME_OPTION_EXACT);
                if(img == "[object TiBlob]"){
                    try{
                        arr_view_VARIE[i].children[0].image = arr_vidplayer_VARIE[i].thumbnailImageAtTime(arr_vidplayer_VARIE_cont[i],Titanium.Media.VIDEO_TIME_OPTION_EXACT);
                    }catch(e){
                        clearInterval(timer_VARIE);
                    }
                }

            }else{
                arr_vidplayer_VARIE_cont[i] = 0;
            }

       },200);

    });

    view_video.addEventListener("touchend",function(e){
       clearInterval(timer_VARIE);
    });

    view_video.addEventListener("click",function(e){

        arr_vidplayer_VARIE[parseInt(e.source.id)-1].play();
        Ti.API.info("play "+e.source.id);

    });

    var image_video = Ti.UI.createImageView({
        width : 200,
        height : 120,
        left : 0,
        top : 0,
        id : parseInt(id),
    });


    var activity = Ti.UI.createActivityIndicator({
       style : Ti.UI.iPhone.ActivityIndicatorStyle.DARK
    });

    view_video.add(image_video);
    view_video.add(activity);
    //win.add(video);
    activity.show();

    arr_view_VARIE.push(view_video);
    scroll_VARIE.add(view_video);

}

function END_LOAD_VARIE(id,state){

    if(parseInt(state) == 3){
        arr_view_VARIE[id-1].children[1].hide();
        arr_view_VARIE[id-1].children[0].image = arr_vidplayer_VARIE[id-1].thumbnailImageAtTime(1,Titanium.Media.VIDEO_TIME_OPTION_EXACT);
        arr_vidplayer_VARIE_duration.push(parseInt(arr_vidplayer_VARIE[id-1].getDuration()/1000));
        actual_video_VARIE++;
        START_VARIE();
    }

}


//****************************************************************************************************************

START_VARIE();

win.add(scroll_VARIE);
win.open();

//****************************************************************************************************************

【问题讨论】:

  • 问题只是无法启动视频

标签: ios titanium appcelerator


【解决方案1】:

Appcelerator 文档声明,在电影播放器​​的视图可见之前,iOS 上的全屏属性无效。试试:

var video = Titanium.Media.createVideoPlayer({
    url : myurl,
    mediaControlStyle : Titanium.Media.VIDEO_CONTROL_DEFAULT,
    scalingMode : Titanium.Media.VIDEO_SCALING_ASPECT_FILL,
    fullscreen : false,
    id : parseInt(id),
    autoplay : true
});

view_video.addEventListener("click",function(e){
    view_video.setFullscreen(true);
    arr_vidplayer_VARIE[parseInt(e.source.id)-1].play();
    Ti.API.info("play "+e.source.id);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多