Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /NNDDv2/trunk/src/org/mineap/nndd/player/PlayerController.as

Parent Directory Parent Directory | Revision Log Revision Log


Revision 652 - (hide annotations) (download)
Tue Sep 6 05:04:11 2011 UTC (12 years, 7 months ago) by mineap
File size: 156152 byte(s)
InfoViewを閉じていても、動画を再生するたびにInfoViewが再表示される問題を修正
1 mineap 370 package org.mineap.nndd.player
2     {
3     import flash.display.Loader;
4     import flash.display.LoaderInfo;
5     import flash.display.MovieClip;
6     import flash.display.NativeWindowType;
7     import flash.display.StageDisplayState;
8 mineap 498 import flash.display.StageQuality;
9 mineap 576 import flash.errors.IOError;
10 mineap 370 import flash.events.ErrorEvent;
11     import flash.events.Event;
12     import flash.events.EventDispatcher;
13     import flash.events.HTTPStatusEvent;
14     import flash.events.IOErrorEvent;
15     import flash.events.MouseEvent;
16     import flash.events.TimerEvent;
17     import flash.filesystem.File;
18     import flash.media.SoundMixer;
19     import flash.media.SoundTransform;
20     import flash.net.URLRequest;
21     import flash.utils.Timer;
22    
23     import mx.collections.ArrayCollection;
24     import mx.controls.Alert;
25     import mx.controls.DataGrid;
26     import mx.controls.SWFLoader;
27     import mx.controls.Text;
28     import mx.controls.videoClasses.VideoError;
29 mineap 381 import mx.core.FlexGlobals;
30 mineap 370 import mx.core.Window;
31     import mx.events.AIREvent;
32     import mx.events.FlexEvent;
33     import mx.events.VideoEvent;
34     import mx.formatters.DateFormatter;
35 mineap 531 import mx.formatters.NumberFormatter;
36 mineap 370
37     import org.libspark.utils.ForcibleLoader;
38 mineap 576 import org.mineap.nicovideo4as.CommentPost;
39 mineap 370 import org.mineap.nicovideo4as.MyListLoader;
40     import org.mineap.nicovideo4as.WatchVideoPage;
41     import org.mineap.nicovideo4as.analyzer.GetRelationResultAnalyzer;
42     import org.mineap.nicovideo4as.loader.api.ApiGetRelation;
43     import org.mineap.nicovideo4as.model.RelationResultItem;
44     import org.mineap.nicovideo4as.util.HtmlUtil;
45     import org.mineap.nndd.Access2Nico;
46     import org.mineap.nndd.FileIO;
47     import org.mineap.nndd.LogManager;
48     import org.mineap.nndd.Message;
49     import org.mineap.nndd.NNDDDownloader;
50     import org.mineap.nndd.NNDDVideoPageWatcher;
51     import org.mineap.nndd.RenewDownloadManager;
52     import org.mineap.nndd.history.HistoryManager;
53     import org.mineap.nndd.library.ILibraryManager;
54     import org.mineap.nndd.library.LibraryManagerBuilder;
55     import org.mineap.nndd.library.LocalVideoInfoLoader;
56     import org.mineap.nndd.model.NNDDComment;
57     import org.mineap.nndd.model.NNDDVideo;
58     import org.mineap.nndd.model.PlayList;
59 mineap 615 import org.mineap.nndd.myList.MyListManager;
60 mineap 370 import org.mineap.nndd.playList.PlayListManager;
61 mineap 381 import org.mineap.nndd.player.comment.Command;
62     import org.mineap.nndd.player.comment.CommentManager;
63     import org.mineap.nndd.player.comment.Comments;
64 mineap 530 import org.mineap.nndd.player.model.PlayerTagString;
65 mineap 565 import org.mineap.nndd.user.UserManager;
66 mineap 370 import org.mineap.nndd.util.DateUtil;
67     import org.mineap.nndd.util.IchibaBuilder;
68     import org.mineap.nndd.util.LibraryUtil;
69     import org.mineap.nndd.util.NumberUtil;
70     import org.mineap.nndd.util.PathMaker;
71     import org.mineap.nndd.util.RelationTypeUtil;
72     import org.mineap.nndd.util.ThumbInfoAnalyzer;
73     import org.mineap.nndd.util.ThumbInfoUtil;
74     import org.mineap.nndd.util.WebServiceAccessUtil;
75     import org.mineap.util.config.ConfigIO;
76     import org.mineap.util.config.ConfigManager;
77 mineap 418 import org.osmf.events.LoadEvent;
78 mineap 403 import org.osmf.events.MediaPlayerStateChangeEvent;
79 mineap 381 import org.osmf.events.TimeEvent;
80 mineap 529 import org.osmf.layout.ScaleMode;
81 mineap 403 import org.osmf.media.MediaPlayerState;
82 mineap 381
83 mineap 565 import spark.components.VideoDisplay;
84 mineap 370
85     /**
86     * ���������������������������������������������������������������������������GUI������������������������
87     *
88 mineap 381 * @author shiraminekeisuke(MineAP)
89 mineap 370 *
90     */
91     public class PlayerController extends EventDispatcher
92     {
93    
94     public static const WINDOW_TYPE_SWF:int = 0;
95     public static const WINDOW_TYPE_FLV:int = 1;
96    
97     public static const NG_LIST_RENEW:String = "NgListRenew";
98    
99     private var commentManager:CommentManager;
100     private var comments:Comments;
101    
102     public var windowType:int = -1;
103     public var videoPlayer:VideoPlayer;
104     public var videoInfoView:VideoInfoView;
105     public var ngListManager:NGListManager;
106     public var libraryManager:ILibraryManager;
107     public var playListManager:PlayListManager;
108    
109     private var windowReady:Boolean = false;
110    
111     private var swfLoader:SWFLoader = null;
112     private var loader:Loader = null;
113     private var isMovieClipPlaying:Boolean = false;
114    
115 mineap 381 private var videoDisplay:VideoDisplay = null;
116 mineap 370
117     private var nicowariSwfLoader:SWFLoader = null;
118    
119     private var isStreamingPlay:Boolean = false;
120    
121     private var source:String = "";
122    
123     private var commentTimer:Timer = new Timer(1000/15);
124     private var commentTimerVpos:int = 0;
125    
126     private var lastSeekTime:Number = new Date().time;
127    
128     private var time:Number = 0;
129    
130     private var pausing:Boolean = false;
131    
132     private var downLoadedURL:String = null;
133    
134     private var isPlayListingPlay:Boolean = false;
135     private var playingIndex:int = 0;
136    
137     private var logManager:LogManager;
138    
139     private var mc:MovieClip;
140     private var nicowariMC:MovieClip;
141     public var swfFrameRate:Number = 0;
142    
143     public var sliderChanging:Boolean = false;
144    
145     private var nicowariTimer:Timer;
146    
147     private var isCounted:Boolean = false;
148    
149     private var isMovieClipStopping:Boolean = false;
150    
151     public var isPlayerClosing:Boolean = false;
152    
153     public var _isEconomyMode:Boolean = false;
154    
155     private var renewDownloadManager:RenewDownloadManager;
156     private var nnddDownloaderForStreaming:NNDDDownloader;
157     private var playerHistoryManager:PlayerHistoryManager;
158     private var renewDownloadManagerForOldComment:RenewDownloadManager;
159    
160     public static const NICO_WARI_HEIGHT:int = 56;
161     public static const NICO_WARI_WIDTH:int = 544;
162    
163     public static const NICO_SWF_HEIGHT:int = 384;
164     public static const NICO_SWF_WIDTH:int = 512;
165    
166     public static const NICO_VIDEO_WINDOW_HEIGHT:int = 384;
167 mineap 529 public static const NICO_VIDEO_WINDOW_WIDTH:int = 512;
168     public static const NICO_VIDEO_WINDOW_WIDTH_WIDE_MODE:int = 640;
169 mineap 370
170 mineap 529 public static const NICO_VIDEO_PADDING:int = 10;
171    
172 mineap 370 public static const WIDE_MODE_ASPECT_RATIO:Number = 1.7;
173    
174     //������������������������������������������������������null���
175     private var playingJihou:String = null;
176    
177     private var movieEndTimer:Timer = null;
178    
179     private var isSwfConverting:Boolean = false;
180    
181     private var streamingProgressTimer:Timer = null;
182    
183     private var _videoID:String = null;
184    
185     private var nnddDownloaderForWatch:NNDDDownloader = null;
186    
187     private var lastFrame:int = 0;
188    
189     private var lastNicowariFrame:int = 0;
190    
191     private var myListLoader:MyListLoader = null;
192    
193     private var nicowariCloseTimer:Timer = null;
194    
195     private var configIO:ConfigIO;
196    
197     private var streamingRetryCount:int = 0;
198    
199     private var nicoVideoPageGetRetryTimer:Timer;
200    
201     private var nicoVideoAccessRetryTimer:Timer;
202    
203     private var nicoRelationInfoLoader:ApiGetRelation = null;
204    
205 mineap 531 private var lastLoadedBytes:Number = 0;
206    
207 mineap 455 [Embed(source="/player/NNDDicons_play_20x20.png")]
208 mineap 370 private var icon_Play:Class;
209    
210 mineap 455 [Embed(source="/player/NNDDicons_pause_20x20.png")]
211 mineap 370 private var icon_Pause:Class;
212    
213 mineap 455 [Embed(source="/player/NNDDicons_stop_20x20.png")]
214 mineap 370 private var icon_Stop:Class;
215    
216    
217     /**
218     * ������������������������Player���������������PlayerController���������<br>
219     * FLV���MP4������������������������Player���SWF������������������������Player���������������<br>
220     * ���������������������������������������<br>
221     *
222     */
223 mineap 565 public function PlayerController()
224 mineap 370 {
225     this.logManager = LogManager.instance;
226     this.libraryManager = LibraryManagerBuilder.instance.libraryManager;
227 mineap 565 this.playListManager = PlayListManager.instance;
228 mineap 370 this.videoPlayer = new VideoPlayer();
229     this.videoInfoView = new VideoInfoView();
230     this.videoInfoView.type = NativeWindowType.UTILITY;
231     ConfigManager.getInstance().reload();
232     this.videoPlayer.init(this, videoInfoView, logManager);
233     this.videoInfoView.init(this, videoPlayer, logManager);
234     this.videoPlayer.addEventListener(AIREvent.WINDOW_COMPLETE, function():void{
235     videoInfoView.activate();
236     videoPlayer.activate();
237     });
238     this.ngListManager = new NGListManager(this, videoPlayer, videoInfoView, logManager);
239     if(libraryManager != null){
240     if(!this.ngListManager.loadNgList(LibraryManagerBuilder.instance.libraryManager.systemFileDir)){
241     this.ngListManager.loadNgList(LibraryManagerBuilder.instance.libraryManager.libraryDir);
242     }
243     }
244     this.commentTimer.addEventListener(TimerEvent.TIMER, commentTimerHandler);
245     this.commentManager = new CommentManager(videoPlayer, videoInfoView, this);
246 mineap 565
247 mineap 370 this.playerHistoryManager = new PlayerHistoryManager();
248    
249     }
250    
251     /**
252     * ���������������������������
253     * Comments���NgList���null���������������GC������������������
254     *
255     */
256     public function destructor():void{
257    
258     isMovieClipStopping = false;
259    
260     if(this.movieEndTimer != null){
261     this.movieEndTimer.stop();
262     this.movieEndTimer = null;
263     }
264    
265     if(this.commentTimer != null){
266     this.commentTimer.stop();
267     this.commentTimer.reset()
268     }else{
269     this.commentTimer = new Timer(1000/15);
270     this.commentTimer.addEventListener(TimerEvent.TIMER, commentTimerHandler);
271     }
272    
273     if(this.comments != null){
274     this.comments.destructor();
275     }
276     this.comments = null;
277     // this.ngList = null;
278    
279     if(videoDisplay != null){
280     try{
281     videoDisplay.stop();
282     }catch(error:VideoError){
283     trace(error.getStackTrace());
284     }
285     removeVideoDisplayEventListeners(videoDisplay);
286     videoDisplay.source = null;
287     videoDisplay = null;
288     this.videoPlayer.canvas_video.removeAllChildren();
289     }
290    
291     isMovieClipPlaying = false;
292     if(loader != null && !isSwfConverting){
293     SoundMixer.stopAll();
294     loader.unloadAndStop(true);
295     // removeMovieClipEventHandlers(loader);
296     loader = null;
297     this.videoPlayer.canvas_video.removeAllChildren();
298     isSwfConverting = false;
299     }
300     if(swfLoader != null && !isSwfConverting){
301     SoundMixer.stopAll();
302     swfLoader.unloadAndStop(true);
303     swfLoader = null;
304     this.videoPlayer.canvas_video.removeAllChildren();
305     isSwfConverting = false;
306     }
307    
308     if(this.nicowariSwfLoader != null){
309     videoPlayer.canvas_nicowari.removeAllChildren();
310     if(nicowariMC != null){
311     this.pauseByNicowari(true);
312     }
313     }
314    
315     if(videoPlayer != null && videoPlayer.canvas_nicowari != null){
316     videoPlayer.canvas_nicowari.removeAllChildren();
317     videoPlayer.canvas_nicowari.setConstraintValue("backgroundColor", new int("0x969696"));
318    
319     }
320    
321     if(streamingProgressTimer != null){
322     streamingProgressTimer.stop();
323     streamingProgressTimer = null;
324     }
325    
326     playingJihou = null;
327    
328     if(nnddDownloaderForWatch != null){
329     nnddDownloaderForWatch.close(false, false);
330     nnddDownloaderForWatch = null;
331     }
332    
333     if(myListLoader != null){
334     myListLoader.close();
335     myListLoader = null;
336     }
337    
338     this.lastFrame = 0;
339     this.lastNicowariFrame = 0;
340    
341 mineap 531 this.lastLoadedBytes = 0;
342    
343 mineap 490 if(videoInfoView != null){
344     videoInfoView.pubUserLinkButtonText = "(���������)";
345     videoInfoView.pubUserNameIconUrl = null;
346     videoInfoView.pubUserName = "(���������)";
347    
348     if(videoInfoView.pubUserLinkButton != null){
349     videoInfoView.pubUserLinkButton.label = videoInfoView.pubUserLinkButtonText;
350     videoInfoView.image_pubUserIcon.source = videoInfoView.pubUserNameIconUrl;
351     videoInfoView.label_pubUserName.text = videoInfoView.pubUserName;
352     }
353     }
354    
355 mineap 370 isCounted = false;
356    
357     }
358    
359     /**
360     * ������������������������Player���������������������������<br>
361     * autoPlay���true������������������������init()���������������������������������������������������������������<br>
362     * <b>playMovie()���������������������������</b>
363     *
364     * @param videoPath
365     * @param windowType
366     * @param comments
367     * @param thumbInfoPath
368     * @param ngList
369     * @param autoPlay
370     * @param isStreamingPlay
371     * @param downLoadedURL
372     * @param isPlayListingPlay
373     *
374     */
375     private function init(videoPath:String, windowType:int, comments:Comments, thumbInfoPath:String,
376     autoPlay:Boolean = false, isStreamingPlay:Boolean = false,
377     downLoadedURL:String = null, isPlayListingPlay:Boolean = false, videoId:String = ""):void
378     {
379     this.destructor();
380    
381     if(videoPlayer != null){
382     videoPlayer.resetInfo();
383     if(videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
384     videoPlayer.restore();
385     }
386     }
387    
388     if(videoInfoView != null){
389     videoInfoView.resetInfo();
390 mineap 529 // videoInfoView.restore();
391 mineap 370 }
392    
393     videoPlayer.setControllerEnable(false);
394    
395     this._videoID = null;
396     if(videoId != null && videoId != ""){
397     this._videoID = videoId;
398     }
399    
400     this.windowReady = false;
401     this.source = videoPath;
402     this.comments = comments;
403     this.time = (new Date).time;
404     this.isStreamingPlay = isStreamingPlay;
405     this.downLoadedURL = downLoadedURL;
406     this.isPlayListingPlay = isPlayListingPlay;
407     this.windowType = windowType;
408    
409     if(!isPlayListingPlay){
410     this.videoInfoView.resetPlayList();
411     }
412    
413     this.videoPlayer.videoController.resetAlpha(true);
414    
415     if(isStreamingPlay){
416     if(streamingProgressTimer != null){
417     streamingProgressTimer.stop();
418     streamingProgressTimer = null;
419     }
420    
421 mineap 531 this.videoPlayer.label_playSourceStatus.text = "Streaming:0%";
422 mineap 484 videoInfoView.connectionType = "Streaming";
423 mineap 531 streamingProgressTimer = new Timer(500);
424 mineap 370 streamingProgressTimer.addEventListener(TimerEvent.TIMER, streamingProgressHandler);
425     streamingProgressTimer.start();
426    
427     if(this.videoPlayer.title == null){
428     this.videoPlayer.addEventListener(FlexEvent.CREATION_COMPLETE, function():void{
429     this.videoPlayer.title = downLoadedURL.substr(downLoadedURL.lastIndexOf("/") + 1);
430     });
431     }else{
432     this.videoPlayer.title = downLoadedURL.substr(downLoadedURL.lastIndexOf("/") + 1);
433     }
434     }else{
435     this.videoPlayer.label_playSourceStatus.text = "[Local]";
436 mineap 484 videoInfoView.connectionType = "Local";
437 mineap 370 this.streamingRetryCount = 0;
438     if(this.videoPlayer.title == null){
439     this.videoPlayer.addEventListener(FlexEvent.CREATION_COMPLETE, function():void{
440     this.videoPlayer.title = videoPath.substr(videoPath.lastIndexOf("/") + 1);
441     });
442     }else{
443     this.videoPlayer.title = videoPath.substr(videoPath.lastIndexOf("/") + 1);
444     }
445     var file:File = new File(videoPath);
446     if(!file.exists){
447     Alert.show("������������������������������������\n������������������������������������������������������������������������������", "���������");
448     logManager.addLog("������������������������������������������������������������������������������������������������������������������:" + file.nativePath);
449 mineap 381 FlexGlobals.topLevelApplication.activate();
450 mineap 370 return;
451     }
452    
453     }
454    
455     /* ������������������������������������������������������������������������ */
456     if(!isStreamingPlay && this.videoInfoView.isRenewCommentEachPlay){
457     //���������������������������������������������������������������
458    
459     logManager.addLog(Message.START_PLAY_EACH_COMMENT_DOWNLOAD);
460     videoPlayer.label_downloadStatus.text = Message.START_PLAY_EACH_COMMENT_DOWNLOAD;
461    
462     if(this._videoID == null){
463     this._videoID = PathMaker.getVideoID(videoPath);
464     }
465    
466     if(this._videoID != null && PathMaker.getVideoID(videoPath) == LibraryUtil.getVideoKey(videoPath)){
467    
468 mineap 565 if((UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != null && UserManager.instance.password != "")){
469 mineap 370
470     /* ������������������������������������������������ */
471    
472     var videoUrl:String = "http://www.nicovideo.jp/watch/"+PathMaker.getVideoID(this._videoID);
473    
474 mineap 512 renewCommentAtStart(PathMaker.getVideoID(this._videoID), videoPath, thumbInfoPath, autoPlay);
475 mineap 370
476     }else{
477    
478     /* ��������������������������������������������������� */
479     logManager.addLog(Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD + "(������������������������������)");
480 mineap 512 initStart(videoPath, thumbInfoPath, autoPlay);
481 mineap 370
482     }
483    
484     }else{
485    
486     logManager.addLog(Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD + "(������ID���������������������)");
487     videoPlayer.label_downloadStatus.text = Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD + "(������ID���������������������)";
488    
489     var timer:Timer = new Timer(1000, 1);
490     timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:TimerEvent):void{
491 mineap 512 initStart(videoPath, thumbInfoPath, autoPlay);
492 mineap 370
493     timer.stop();
494     timer = null;
495    
496     });
497     timer.start();
498    
499     }
500     }else{
501     //���������������������������������������������������(������������������������������������������������)
502    
503     this._videoID = videoId;
504    
505     if(this._videoID == null || this._videoID == ""){
506     this._videoID = PathMaker.getVideoID(videoPlayer.title);
507     }
508    
509     logManager.addLog("���������������������������������������:" + this._videoID);
510    
511     if(this._videoID != null && this._videoID != ""){
512    
513 mineap 565 if(UserManager.instance.user != null && UserManager.instance.user != "" &&
514     UserManager.instance.password != null && UserManager.instance.password != ""){
515 mineap 370
516     myListGroupUpdate(PathMaker.getVideoID(this._videoID));
517    
518     }else{
519     //���������������������������������
520     logManager.addLog("���������������������������������������(���������������������������)");
521     }
522    
523     }else{
524     //
525     logManager.addLog("���������������������������������������(������ID���������������������)");
526     }
527    
528 mineap 512 initStart(videoPath, thumbInfoPath, autoPlay);
529 mineap 370 }
530    
531 mineap 512 }
532    
533     /**
534     * VideoDisplay���������������SWFLoader���������������������������������������������������������������������
535     *
536     * @param videoPath ���������������
537     * @param thumbInfoPath ������������������������������
538     * @param autoPlay ������������������������������������������
539     */
540     private function initStart(videoPath:String, thumbInfoPath:String, autoPlay:Boolean):void
541     {
542     trace(videoPlayer.stage.quality);
543    
544     try{
545     if(_isEconomyMode){
546     videoPlayer.label_economyStatus.text = "������������������������";
547     }else{
548     videoPlayer.label_economyStatus.text = "";
549     }
550 mineap 370
551 mineap 512 videoPlayer.canvas_video.toolTip = null;
552 mineap 498
553 mineap 512 if(isPlayerClosing){
554     stop();
555     destructor();
556     return;
557     }
558    
559     commentTimerVpos = 0;
560    
561     var text:Text = new Text();
562     text.text = "������������������������������������������������������������������������������������������������\n������������������������������������������������������������������";
563     text.setConstraintValue("left", 10);
564     text.setConstraintValue("top", 10);
565     videoPlayer.canvas_nicowari.addChild(text);
566    
567     videoPlayer.label_downloadStatus.text = "";
568     videoInfoView.image_thumbImg.source = "";
569 mineap 529 videoInfoView.text_info.htmlText ="(������������������������)<br />(������������������������)<br />������: ������������: ���������������:"
570 mineap 512
571     if(isStreamingPlay){
572     //������������������DL������������������������������
573     setInfo(downLoadedURL, thumbInfoPath, thumbInfoPath.substring(0, thumbInfoPath.lastIndexOf("/")) + "/nndd[IchibaInfo].html", true);
574 mineap 370
575 mineap 512 videoInfoView.image_thumbImg.source = thumbInfoPath.substring(0, thumbInfoPath.lastIndexOf("/")) + "/nndd[ThumbImg].jpeg";
576     }else{
577     setInfo(videoPath, thumbInfoPath, PathMaker.createNicoIchibaInfoPathByVideoPath(videoPath), false);
578 mineap 370
579 mineap 512 var nnddVideo:NNDDVideo = libraryManager.isExist(PathMaker.getVideoID(videoPath));
580    
581     if(nnddVideo != null){
582     videoInfoView.image_thumbImg.source = nnddVideo.thumbUrl;
583 mineap 370 }
584 mineap 512 }
585    
586     changeFps(videoInfoView.fps);
587    
588     videoPlayer.videoController.label_time.text = "0:00/0:00";
589     videoPlayer.videoController_under.label_time.text = "0:00/0:00";
590    
591     if(videoInfoView.isShowAlwaysNicowariArea){
592     //������������������������������������
593     videoPlayer.showNicowariArea();
594 mineap 370
595 mineap 512 }else{
596     //���������������������������������
597     videoPlayer.hideNicowariArea();
598 mineap 370
599 mineap 512 }
600    
601     var video:NNDDVideo = libraryManager.isExist(LibraryUtil.getVideoKey(_videoID));
602     if(video != null){
603     HistoryManager.instance.addVideoByNNDDVideo(video);
604     }else{
605     video = new NNDDVideo("http://www.nicovideo.jp/watch/" + PathMaker.getVideoID(_videoID), videoPlayer.title, false, null, null, null, PathMaker.getThumbImgUrl(PathMaker.getVideoID(_videoID)));
606 mineap 370
607 mineap 512 HistoryManager.instance.addVideoByNNDDVideo(video, null, false);
608     }
609    
610     if(windowType == PlayerController.WINDOW_TYPE_FLV){
611     //WINDOW_TYPE_FLV���������������������������������
612    
613     isMovieClipPlaying = false;
614    
615     videoDisplay = new VideoDisplay();
616    
617 mineap 370 videoPlayer.label_downloadStatus.text = "";
618    
619     if(isStreamingPlay){
620 mineap 512 videoPlayer.label_downloadStatus.text = "���������������...";
621     videoDisplay.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
622     }
623    
624     videoPlayer.canvas_video.removeAllChildren();
625     videoPlayer.canvas_video.addChild(videoDisplay);
626    
627     videoDisplay.setConstraintValue("bottom", 0);
628     videoDisplay.setConstraintValue("left", 0);
629     videoDisplay.setConstraintValue("right", 0);
630     videoDisplay.setConstraintValue("top", 0);
631    
632     if(videoPath.length > 4 && videoPath.substr(0,4) == "http"){
633     videoInfoView.videoServerUrl = videoPath.substring(0, videoPath.lastIndexOf("/"));
634 mineap 370 }else{
635 mineap 512 videoInfoView.videoServerUrl = videoPath;
636     var messageServerUrl:String = PathMaker.createNomalCommentPathByVideoPath(videoPath);
637     if(messageServerUrl != null){
638     videoInfoView.messageServerUrl = messageServerUrl;
639 mineap 370 }
640     }
641 mineap 512 videoInfoView.videoType = "FLV/MP4";
642 mineap 370
643 mineap 512 videoDisplay.autoPlay = autoPlay;
644     videoDisplay.source = videoPath;
645     videoDisplay.autoRewind = false;
646     videoDisplay.volume = videoPlayer.videoController.slider_volume.value;
647     videoPlayer.videoController_under.slider_volume.value = videoPlayer.videoController.slider_volume.value;
648 mineap 370
649 mineap 512 addVideoDisplayEventListeners(videoDisplay);
650    
651     commentManager.initComment(comments, videoPlayer.canvas_video);
652     commentManager.setCommentAlpha(videoInfoView.commentAlpha/100);
653    
654     windowReady = true;
655    
656     if(autoPlay && !isStreamingPlay){
657     time = (new Date).time;
658     commentTimer.start();
659 mineap 370 }
660    
661 mineap 512 videoDisplay.addEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
662     videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
663     videoDisplay.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void{
664     event.currentTarget.setFocus();
665     });
666 mineap 370
667 mineap 512 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
668     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
669     setVolume(videoPlayer.videoController.slider_volume.value);
670    
671 mineap 529 // if(videoInfoView.visible){
672     // videoInfoView.restore();
673     // }
674 mineap 512 if(videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
675     videoPlayer.restore();
676     }
677    
678 mineap 529 // if(videoInfoView.visible){
679     // videoInfoView.activate();
680     // }
681 mineap 532 // videoPlayer.activate();
682     videoPlayer.showVideoPlayerAndVideoInfoView();
683 mineap 512
684     windowResized(false);
685    
686     videoPlayer.setControllerEnable(true);
687    
688     }else if(windowType == PlayerController.WINDOW_TYPE_SWF){
689     //WINODW_TYPE_SWF���������������������������������
690    
691     isMovieClipPlaying = true;
692     isSwfConverting = true;
693    
694     videoPlayer.label_downloadStatus.text = "SWF������������������������...";
695    
696     loader = new Loader();
697     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, convertCompleteHandler);
698     var fLoader:ForcibleLoader = new ForcibleLoader(loader);
699     swfLoader = new SWFLoader();
700     swfLoader.addChild(loader);
701    
702     videoPlayer.canvas_video.removeAllChildren();
703     videoPlayer.canvas_video.addChild(swfLoader);
704    
705     swfLoader.setConstraintValue("bottom", 0);
706     swfLoader.setConstraintValue("left", 0);
707     swfLoader.setConstraintValue("right", 0);
708     swfLoader.setConstraintValue("top", 0);
709    
710     swfLoader.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void{
711     event.currentTarget.setFocus();
712     });
713    
714     commentManager.initComment(comments, videoPlayer.canvas_video);
715     commentManager.setCommentAlpha(videoInfoView.commentAlpha/100);
716    
717     windowReady = true;
718    
719     if(videoPath.length > 4 && videoPath.substr(0,4) == "http"){
720     videoInfoView.videoServerUrl = videoPath.substring(0, videoPath.lastIndexOf("/"));
721 mineap 370 }else{
722 mineap 512 videoInfoView.videoServerUrl = videoPath;
723     var messageServerUrl:String = PathMaker.createNomalCommentPathByVideoPath(videoPath);
724     if(messageServerUrl != null){
725     videoInfoView.messageServerUrl = messageServerUrl;
726     }
727 mineap 370 }
728 mineap 512 videoInfoView.videoType = "SWF";
729     if(autoPlay){
730     fLoader.load(new URLRequest(videoPath));
731     }
732 mineap 370
733 mineap 512 var timer:Timer = new Timer(500, 4);
734     timer.addEventListener(TimerEvent.TIMER, function():void{
735 mineap 370 windowResized(false);
736 mineap 512 });
737     timer.start();
738    
739     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
740     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
741    
742 mineap 529 // if(videoInfoView.visible){
743     // videoInfoView.restore();
744     // }
745 mineap 370
746 mineap 512 if(videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
747     videoPlayer.restore();
748 mineap 370 }
749    
750 mineap 529 // if(videoInfoView.visible){
751     // videoInfoView.activate();
752     // }
753 mineap 532 // videoPlayer.activate();
754     videoPlayer.showVideoPlayerAndVideoInfoView();
755 mineap 512
756     videoPlayer.setControllerEnable(true);
757    
758 mineap 370 }
759    
760 mineap 512 if(videoInfoView != null && videoInfoView.tabNavigator_comment != null){
761     if(videoInfoView.tabNavigator_comment.selectedIndex == 1){
762     // ���������������������������������������������������������������������������������
763     videoInfoView.reloadOldComment();
764     }else{
765     // ������������������������������������������������������
766     videoInfoView.resetOldCommentDate();
767     }
768     }
769    
770     return;
771     }catch(error:Error){
772     trace(error.getStackTrace());
773     logManager.addLog(error + ":" + error.getStackTrace());
774 mineap 370 }
775     }
776    
777 mineap 512
778 mineap 370 /**
779 mineap 441 * ���������������������������������������
780 mineap 370 *
781     * @param videoId
782     * @param videoPath
783 mineap 512 * @param thumbInfoPath
784     * @param autoPlay
785 mineap 370 *
786     */
787 mineap 512 private function renewCommentAtStart(videoId:String, videoPath:String, thumbInfoPath:String, autoPlay:Boolean):void{
788 mineap 370
789     var videoName:String = PathMaker.getVideoName(videoPath);
790    
791     if(renewDownloadManager != null){
792     renewDownloadManager.close();
793     renewDownloadManager = null;
794     }
795    
796     renewDownloadManager = new RenewDownloadManager(null, logManager);
797     renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_COMPLETE, function(event:Event):void{
798     var video:NNDDVideo = libraryManager.isExist(PathMaker.getVideoID(videoPath));
799     if(video == null){
800     try{
801     video = new LocalVideoInfoLoader().loadInfo(videoPath);
802     video.creationDate = new File(videoPath).creationDate;
803     video.modificationDate = new File(videoPath).modificationDate;
804     }catch(error:Error){
805     video = new NNDDVideo(videoPath);
806     }
807     libraryManager.add(video, false);
808     video = libraryManager.isExist(video.key);
809     }
810     var thumbUrl:String = (event.currentTarget as RenewDownloadManager).localThumbUri;
811     var isLocal:Boolean = false;
812     try{
813     //������������������������������������������������������������������������������������
814     var file:File = new File(video.thumbUrl);
815     if(file.exists){
816     isLocal = true;
817     }
818     }catch(e:Error){
819     trace(e);
820     }
821    
822     //thumbUrl���URL���������������������������������������������������
823     if(!isLocal){
824     if(thumbUrl != null){
825     //���������������������thumbUrl���������
826     video.thumbUrl = thumbUrl;
827     }else if (video.thumbUrl == null || video.thumbUrl == ""){
828     //thumbUrl���������������==������������������
829     var videoId:String = PathMaker.getVideoID(_videoID);
830     if(videoId != null){
831     video.thumbUrl = PathMaker.getThumbImgUrl(videoId);
832     }else{
833     video.thumbUrl = "";
834     }
835     }
836     }
837    
838     libraryManager.update(video, false);
839    
840 mineap 507
841     var videoMin:int = video.time / 60;
842     ++videoMin;
843    
844 mineap 370 var commentPath:String = PathMaker.createNomalCommentPathByVideoPath(video.getDecodeUrl());
845     var ownerCommentPath:String = PathMaker.createOwnerCommentPathByVideoPath(video.getDecodeUrl());
846 mineap 507 comments = new Comments(commentPath,
847     ownerCommentPath,
848     getCommentListProvider(),
849     getOwnerCommentListProvider(),
850     ngListManager,
851     videoInfoView.isShowOnlyPermissionComment,
852     videoInfoView.isHideSekaShinComment,
853     videoInfoView.showCommentCountPerMin * videoMin,
854     videoInfoView.showOwnerCommentCountPerMin * videoMin,
855     videoInfoView.isNgUpEnable);
856 mineap 370
857     renewDownloadManager = null;
858    
859     myListGroupUpdate(PathMaker.getVideoID(_videoID));
860    
861 mineap 512 initStart(videoPath, thumbInfoPath, autoPlay);
862 mineap 370 });
863     renewDownloadManager.addEventListener(NNDDDownloader.COMMENT_GET_SUCCESS, getProgressListener);
864     renewDownloadManager.addEventListener(NNDDDownloader.GETFLV_API_ACCESS_SUCCESS, getProgressListener);
865     renewDownloadManager.addEventListener(NNDDDownloader.ICHIBA_INFO_GET_SUCCESS, getProgressListener);
866     renewDownloadManager.addEventListener(NNDDDownloader.LOGIN_SUCCESS, getProgressListener);
867     renewDownloadManager.addEventListener(NNDDDownloader.NICOWARI_GET_SUCCESS, getProgressListener);
868     renewDownloadManager.addEventListener(NNDDDownloader.OWNER_COMMENT_GET_SUCCESS, getProgressListener);
869     renewDownloadManager.addEventListener(NNDDDownloader.THUMB_IMG_GET_SUCCESS, getProgressListener);
870     renewDownloadManager.addEventListener(NNDDDownloader.THUMB_INFO_GET_SUCCESS, getProgressListener);
871     renewDownloadManager.addEventListener(NNDDDownloader.VIDEO_GET_SUCCESS, getProgressListener);
872     renewDownloadManager.addEventListener(NNDDDownloader.WATCH_SUCCESS, getProgressListener);
873     renewDownloadManager.addEventListener(NNDDDownloader.DOWNLOAD_PROCESS_COMPLETE, getProgressListener);
874    
875     renewDownloadManager.addEventListener(NNDDDownloader.COMMENT_GET_FAIL, getFailListener);
876     renewDownloadManager.addEventListener(NNDDDownloader.GETFLV_API_ACCESS_FAIL, getFailListener);
877     renewDownloadManager.addEventListener(NNDDDownloader.ICHIBA_INFO_GET_FAIL, getFailListener);
878     renewDownloadManager.addEventListener(NNDDDownloader.LOGIN_FAIL, getFailListener);
879     renewDownloadManager.addEventListener(NNDDDownloader.NICOWARI_GET_FAIL, getFailListener);
880     renewDownloadManager.addEventListener(NNDDDownloader.OWNER_COMMENT_GET_FAIL, getFailListener);
881     renewDownloadManager.addEventListener(NNDDDownloader.THUMB_IMG_GET_FAIL, getFailListener);
882     renewDownloadManager.addEventListener(NNDDDownloader.THUMB_INFO_GET_FAIL, getFailListener);
883     renewDownloadManager.addEventListener(NNDDDownloader.VIDEO_GET_FAIL, getFailListener);
884     renewDownloadManager.addEventListener(NNDDDownloader.WATCH_FAIL, getFailListener);
885    
886     renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_FAIL, function(event:Event):void{
887     renewDownloadManager = null;
888     videoPlayer.label_downloadStatus.text = Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD;
889     logManager.addLog(Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD);
890    
891     var timer:Timer = new Timer(1000, 1);
892     timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
893     myListGroupUpdate(PathMaker.getVideoID(_videoID));
894 mineap 512 initStart(videoPath, thumbInfoPath, autoPlay);
895 mineap 370 });
896     timer.start();
897     });
898     renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{
899     renewDownloadManager = null;
900     videoPlayer.label_downloadStatus.text = Message.PLAY_EACH_COMMENT_DOWNLOAD_CANCEL;
901     logManager.addLog(Message.PLAY_EACH_COMMENT_DOWNLOAD_CANCEL);
902    
903     var timer:Timer = new Timer(1000, 1);
904     timer.addEventListener(TimerEvent.TIMER_COMPLETE, function():void{
905     myListGroupUpdate(PathMaker.getVideoID(_videoID));
906 mineap 512 initStart(videoPath, thumbInfoPath, autoPlay);
907 mineap 370 });
908     timer.start();
909     });
910    
911     if(this.videoInfoView.isRenewOtherCommentWithCommentEachPlay){
912 mineap 565 renewDownloadManager.renewForOtherVideo(UserManager.instance.user,
913     UserManager.instance.password, PathMaker.getVideoID(videoId), videoName,
914 mineap 370 new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)),
915 mineap 381 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount());
916 mineap 370 }else{
917 mineap 565 renewDownloadManager.renewForCommentOnly(UserManager.instance.user,
918     UserManager.instance.password, PathMaker.getVideoID(videoId), videoName,
919 mineap 370 new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)),
920 mineap 381 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount());
921 mineap 370 }
922     }
923    
924     /**
925     * ���������������������������������
926     * @param date
927     *
928     */
929     public function getOldCommentFromNico(date:Date):void{
930    
931     if(renewDownloadManagerForOldComment != null){
932     // ���������������������������
933     renewDownloadManagerForOldComment.close();
934     renewDownloadManagerForOldComment = null;
935     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
936     logManager.addLog("���������������������������������");
937    
938     }else{
939     // ������������
940    
941     videoInfoView.button_oldComment_reloadFromNico.label = "���������������";
942     logManager.addLog("������������������������������:" + DateUtil.getDateString(date));
943    
944     renewDownloadManagerForOldComment = new RenewDownloadManager(null, LogManager.instance);
945     renewDownloadManagerForOldComment.addEventListener(NNDDDownloader.GETWAYBACKKEY_API_ACCESS_FAIL, function(event:Event):void{
946     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
947     logManager.addLog("������������������������������:" + event);
948    
949 mineap 381 FlexGlobals.topLevelApplication.activate();
950 mineap 370 Alert.show("���������������������������������������������\n���������������������������������������������������������������������������������������������\n(���������������������������������������������������������������������������)", Message.M_ERROR);
951     });
952     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{
953     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
954     logManager.addLog("���������������������������������������:" + event);
955    
956     renewDownloadManagerForOldComment = null;
957     });
958     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_COMPLETE, function(event:Event):void{
959     logManager.addLog("������������������������������:" + event);
960     //������������������������������
961     reloadLocalComment(date);
962    
963     renewDownloadManagerForOldComment.close();
964     renewDownloadManagerForOldComment = null;
965    
966     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
967    
968     });
969     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_FAIL, function(event:Event):void{
970     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
971     logManager.addLog("������������������������������:" + event);
972    
973     renewDownloadManagerForOldComment = null;
974    
975 mineap 381 FlexGlobals.topLevelApplication.activate();
976 mineap 370 Alert.show("���������������������������������������������", Message.M_ERROR);
977     });
978    
979     var videoId:String = PathMaker.getVideoID(this._videoID);
980     var videoName:String = null;
981     var videoPath:File = null;
982     if(isStreamingPlay){
983     videoName = "nndd.flv";
984     videoPath = LibraryManagerBuilder.instance.libraryManager.tempDir;
985     }else{
986     videoName = PathMaker.getVideoName(this.source);
987     videoPath = new File(this.source.substring(0, this.source.lastIndexOf("/")+1))
988     }
989    
990     // maxCount���������������������������������������������������������������������������������������������
991 mineap 381 var maxCount:Number = (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount();
992 mineap 370 if(maxCount < 10000){
993     maxCount = 10000;
994     }
995    
996     // ���������������������������������������������������������������������
997 mineap 565 renewDownloadManagerForOldComment.renewForCommentOnly(UserManager.instance.user,
998     UserManager.instance.password, videoId, videoName, videoPath, true,
999 mineap 370 date, maxCount);
1000    
1001     }
1002    
1003     }
1004    
1005     /**
1006     *
1007     * @param event
1008     *
1009     */
1010 mineap 418 protected function byteloadedChangedEventHandler(event:Event):void{
1011 mineap 370 trace(event.type);
1012     if(videoInfoView.isResizePlayerEachPlay){
1013     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1014     }else{
1015     resizePlayerJustVideoSize();
1016     }
1017     }
1018    
1019     /**
1020     *
1021 mineap 418 * @param event
1022     *
1023     */
1024     protected function osmfCurrentTimeChangeEventHandler(event:TimeEvent):void{
1025     trace(event.type + ", time:" + event.time);
1026     if(event.time < 0){
1027     return;
1028     }
1029     if(videoInfoView.isResizePlayerEachPlay){
1030     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1031     }else{
1032     resizePlayerJustVideoSize();
1033     }
1034     }
1035    
1036     /**
1037     *
1038 mineap 370 * @param videoId
1039     * @return
1040     *
1041     */
1042     public function myListGroupUpdate(videoId:String):void{
1043    
1044     myListLoader = new MyListLoader();
1045     myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_SUCCESS, function(event:Event):void{
1046     var myLists:Array = myListLoader.getMyLists();
1047    
1048     if(myLists.length > 0){
1049     var myListNames:Array = new Array();
1050     var myListIds:Array = new Array();
1051    
1052     for each(var array:Array in myLists){
1053     myListNames.push(array[0]);
1054     myListIds.push(array[1]);
1055     }
1056    
1057     videoInfoView.setMyLists(myListNames, myListIds);
1058     }
1059     myListLoader.close();
1060     });
1061     myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_FAILURE, function(event:ErrorEvent):void{
1062     myListLoader.close();
1063     logManager.addLog("���������������������������������������:" + event + ":" + event.text);
1064     });
1065     myListLoader.getMyListGroup(videoId);
1066    
1067     }
1068    
1069    
1070     /**
1071     *
1072     * @param event
1073     *
1074     */
1075 mineap 403 private function mediaPlayerStateChanged(event:MediaPlayerStateChangeEvent):void
1076     {
1077 mineap 370 if(videoDisplay != null && !isPlayerClosing){
1078 mineap 403 if(event.state != MediaPlayerState.BUFFERING){
1079 mineap 370 videoPlayer.label_downloadStatus.text = "";
1080 mineap 403 videoDisplay.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1081 mineap 370 if(commentTimer != null && !commentTimer.running){
1082     time = (new Date).time;
1083     commentTimer.start();
1084     }
1085     }
1086     }else{
1087     (event.currentTarget as VideoDisplay).stop();
1088 mineap 403 (event.currentTarget as VideoDisplay).removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1089 mineap 370 destructor();
1090     }
1091     }
1092    
1093     /**
1094     *
1095     * @param event
1096     *
1097     */
1098     private function convertCompleteHandler(event:Event):void{
1099    
1100     isSwfConverting = false;
1101    
1102     if(loader != null && !isPlayerClosing){
1103    
1104     mc = LoaderInfo(event.currentTarget).loader.content as MovieClip;
1105     swfFrameRate = LoaderInfo(event.currentTarget).loader.contentLoaderInfo.frameRate;
1106     setVolume(videoPlayer.videoController.slider_volume.value);
1107    
1108     if(videoInfoView.isResizePlayerEachPlay){
1109     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1110     }else{
1111     resizePlayerJustVideoSize();
1112     }
1113    
1114     videoPlayer.label_downloadStatus.text = "";
1115    
1116     commentTimer.start();
1117     time = (new Date).time;
1118    
1119     }else{
1120    
1121     if(mc != null){
1122     mc.stop();
1123     }
1124     destructor();
1125     if(event.currentTarget as LoaderInfo){
1126     LoaderInfo(event.currentTarget).loader.unloadAndStop(true);
1127     }
1128    
1129     }
1130    
1131     LoaderInfo(event.currentTarget).loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1132    
1133     }
1134    
1135     /**
1136     * ���������������������������������������������������������������������
1137     *
1138     * @param videoPath
1139     * @param windowType
1140     * @param comments
1141     * @param ngList
1142     * @param playList ���������������������m3u���������
1143     * @param videoNameList ���������������������������������URL���������������������������������������������������������������������������������
1144     * @param playingIndex ������������������������������
1145     * @param autoPlay ������������
1146     * @param isStreamingPlay ���������������������������������������
1147     * @param downLoadedURL ���������������������URL
1148     * @return
1149     *
1150     */
1151     private function initWithPlayList(videoPath:String, windowType:int, comments:Comments, playList:Array, videoNameList:Array, playListName:String, playingIndex:int,
1152     autoPlay:Boolean = false, isStreamingPlay:Boolean = false, downLoadedURL:String = null, videoTitle:String = null):void{
1153    
1154     // this.streamingRetryCount = 0;
1155    
1156     this.playingIndex = playingIndex;
1157     this.isPlayListingPlay = true;
1158     var videoNameArray:Array = videoNameList;
1159     if(videoNameArray == null){
1160     videoNameArray = new Array();
1161     for(var i:int; i<playList.length; i++){
1162     var url:String = playList[i];
1163     videoNameArray.push(url.substring(url.lastIndexOf("/") + 1));
1164     }
1165     }
1166    
1167     if(downLoadedURL == null){
1168     downLoadedURL = videoPath;
1169     }
1170    
1171     this.videoInfoView.resetPlayList();
1172     this.videoInfoView.setPlayList(playList, videoNameArray, playListName);
1173    
1174     trace("\t"+playList);
1175    
1176     this.init(videoPath, windowType, comments, PathMaker.createThmbInfoPathByVideoPath(downLoadedURL), autoPlay, isStreamingPlay, videoTitle, true, LibraryUtil.getVideoKey(videoTitle));
1177     }
1178    
1179     /**
1180     * VideoPlayer������������������������������������������������������������������������������
1181     *
1182     * @param url
1183     * @param index
1184     * @return
1185     *
1186     */
1187     public function initForVideoPlayer(url:String, index:int):void{
1188     playMovie(url, this.videoInfoView.playList, index, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(index)));
1189     }
1190    
1191     /**
1192 mineap 487 *
1193     * @param isSmoothing
1194     *
1195     */
1196     public function setVideoSmoothing(isSmoothing:Boolean):void{
1197    
1198 mineap 529 if (videoDisplay != null && videoDisplay.videoObject != null)
1199     {
1200    
1201     if (isSmoothing)
1202     {
1203     // ������������������������
1204    
1205     if (videoDisplay.videoObject.videoWidth == videoDisplay.videoObject.width)
1206     {
1207     // ���������������������������������������������������
1208     if (videoInfoView.isSmoothingOnlyNotPixelIdenticalDimensions)
1209     {
1210     // ���������������������������������������������������������
1211     videoDisplay.videoObject.smoothing = false;
1212     }
1213     else
1214     {
1215     // ������������������������������������������������������
1216     videoDisplay.videoObject.smoothing = true;
1217     }
1218     }
1219     else
1220     {
1221     // ���������������������������������������������������������
1222     videoDisplay.videoObject.smoothing = true;
1223     }
1224    
1225     }
1226     else
1227     {
1228     // ���������������������������
1229     videoDisplay.videoObject.smoothing = false;
1230     }
1231    
1232 mineap 487 }
1233    
1234     }
1235    
1236     /**
1237 mineap 498 *
1238     * @param value 0-3 default=2
1239     *
1240     */
1241     public function setPlayerQuality(value:int):void{
1242     if(videoPlayer.stage != null){
1243    
1244     var qualityStr:String = StageQuality.HIGH;
1245     switch(value){
1246     case 0:
1247     qualityStr = StageQuality.LOW;
1248     break;
1249     case 1:
1250     qualityStr = StageQuality.MEDIUM;
1251     break;
1252     case 2:
1253     qualityStr = StageQuality.HIGH;
1254     break;
1255     case 3:
1256     qualityStr = StageQuality.BEST;
1257     break;
1258     default:
1259     qualityStr = StageQuality.HIGH;
1260     }
1261    
1262     videoPlayer.stage.quality = qualityStr;
1263     }
1264     }
1265    
1266     /**
1267 mineap 370 * videoDisplay���������������������������������������������������������������������������������������������
1268     * ���������������������������������������������������������������
1269     */
1270     public function resizePlayerJustVideoSize(windowSizeRatio:Number = -1):void{
1271    
1272     try{
1273     var ratio:Number = 1;
1274     if(windowSizeRatio != -1){
1275     ratio = windowSizeRatio;
1276     }
1277    
1278     //������������������������������
1279     var videoWindowHeight:int = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1280     var videoWindowWidth:int = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1281    
1282     //���������������������������������
1283     var nicowariWindowHeight:int = PlayerController.NICO_WARI_HEIGHT * ratio;
1284     var nicowariWindowWidth:int = PlayerController.NICO_WARI_WIDTH * ratio;
1285    
1286     //InfoView���������������������������������������
1287     if(isPlayListingPlay){
1288     if(this.videoInfoView != null){
1289     videoInfoView.showPlayingTitle(playingIndex);
1290     }
1291     }
1292    
1293     //���������������������������������������
1294     if(this.videoPlayer.stage != null && this.videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
1295     //������������������������������������������ ������������������������������������������������������������
1296     if(this.videoInfoView.isResizePlayerEachPlay || windowSizeRatio != -1){
1297    
1298 mineap 381 if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1299 mineap 370 //FLV������������
1300    
1301 mineap 487 // ���������������������������
1302 mineap 529 this.setVideoSmoothing(videoInfoView.isSmoothing);
1303 mineap 487
1304 mineap 381 if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_NICO && this.videoDisplay.videoObject.videoHeight > 0){
1305 mineap 370
1306     //��������������������������������������������������������������� && ��������������������������������������������������� (���������������������������������������������������������������������������������)
1307     var isWideVideo:Boolean = false;
1308 mineap 381 if(WIDE_MODE_ASPECT_RATIO < Number(this.videoDisplay.videoObject.videoWidth)/Number(this.videoDisplay.videoObject.videoHeight)){
1309 mineap 370 // ���������������16:9���
1310     isWideVideo = true;
1311     trace("enable 16:9 mode");
1312     }
1313    
1314     videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1315     if(this.videoInfoView.isEnableWideMode && isWideVideo){
1316     // logManager.addLog("���������(16:9)���������");
1317 mineap 529 videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH_WIDE_MODE + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1318 mineap 370 }else{
1319     // logManager.addLog("������������(4:3)���������");
1320 mineap 529 videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1321 mineap 370 }
1322    
1323 mineap 529 //������������������������������������������
1324     this.videoDisplay.setConstraintValue("left", PlayerController.NICO_VIDEO_PADDING);
1325     this.videoDisplay.setConstraintValue("right", PlayerController.NICO_VIDEO_PADDING);
1326    
1327     trace(videoDisplay.width + "," + videoDisplay.height);
1328    
1329 mineap 418 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1330 mineap 370 //init������������������������������������������������������������������������������������������������������������������
1331 mineap 418 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1332 mineap 370 // resizePlayerJustVideoSize(windowSizeRatio);
1333     }
1334 mineap 418 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1335     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1336     }
1337 mineap 370
1338 mineap 381 }else if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_VIDEO && this.videoDisplay.videoObject.videoHeight > 0){
1339 mineap 370
1340     //���������������������������������������������������������������������(videoHeight���0���������������������������������������������������������������������)
1341    
1342 mineap 381 videoWindowHeight = this.videoDisplay.videoObject.videoHeight * ratio;
1343     videoWindowWidth = this.videoDisplay.videoObject.videoWidth * ratio;
1344 mineap 370
1345     this.videoDisplay.setConstraintValue("bottom", 0);
1346     this.videoDisplay.setConstraintValue("left", 0);
1347     this.videoDisplay.setConstraintValue("right", 0);
1348     this.videoDisplay.setConstraintValue("top", 0);
1349    
1350 mineap 418 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1351 mineap 370 //init������������������������������������������������������������������������������������������������������������������
1352 mineap 418 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1353 mineap 370 // resizePlayerJustVideoSize(windowSizeRatio);
1354     }
1355 mineap 418 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1356     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1357     }
1358 mineap 370 }else{
1359     //������������������������������������������������
1360     return;
1361     }
1362    
1363     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1364     //SWF������������
1365    
1366     //SWF���������������������������������������
1367     videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1368     videoWindowWidth = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1369    
1370     }
1371    
1372     //TODO ���������������VideoDisplay���������������������������������������������������������������
1373    
1374     var rate:Number = PlayerController.NICO_WARI_WIDTH / PlayerController.NICO_WARI_HEIGHT;
1375     if(videoPlayer.canvas_nicowari.height < 1 ){
1376     //������������������������������������������������������������������������������������
1377     videoWindowHeight += int(videoWindowWidth / rate);
1378     }
1379    
1380     this.videoPlayer.nativeWindow.height += int(videoWindowHeight - this.videoPlayer.canvas_video_back.height);
1381     this.videoPlayer.nativeWindow.width += int(videoWindowWidth - this.videoPlayer.canvas_video_back.width);
1382    
1383 mineap 544 // (this.videoPlayer as Window).validateDisplayList();
1384     // (this.videoPlayer as Window).validateNow();
1385 mineap 370
1386     //������������������������������������������������������������������������������������������������������������������
1387     // var diffH:int = this.videoPlayer.nativeWindow.height - this.videoPlayer.stage.stageHeight;
1388     // var diffW:int = this.videoPlayer.nativeWindow.width - this.videoPlayer.stage.stageWidth;
1389    
1390     }
1391 mineap 525 else
1392     {
1393     // ������������������������������������������
1394     if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1395     //FLV������������
1396    
1397     // ���������������������������
1398 mineap 529 this.setVideoSmoothing(videoInfoView.isSmoothing);
1399 mineap 525
1400     if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1401     //init������������������������������������������������������������������������������������������������������������������
1402     videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1403     }
1404     if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1405     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1406     }
1407    
1408     }
1409    
1410     }
1411 mineap 370
1412     }
1413 mineap 569 else
1414     {
1415     if (PlayerController.WINDOW_TYPE_FLV == this.windowType)
1416     {
1417     if (videoInfoView != null)
1418     {
1419     this.setVideoSmoothing(videoInfoView.isSmoothing);
1420     }
1421     }
1422     }
1423 mineap 370
1424     }catch(error:Error){ //������������������������������������������������������������������������������������������
1425     trace(error.getStackTrace());
1426     logManager.addLog("������������������������������������������:" + error + ", " + error.getStackTrace());
1427     stop();
1428     destructor();
1429     }
1430     }
1431    
1432    
1433     /**
1434     * ������������������������������������������������������������������
1435     * ���������������������������������������������������������������������������������������������
1436     * @return
1437     *
1438     */
1439     public function play():void
1440     {
1441     try{
1442     videoPlayer.canvas_video_back.setFocus();
1443    
1444     var newComments:Comments = null;
1445     videoPlayer.canvas_video.toolTip = null;
1446     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1447     if(videoDisplay != null && videoDisplay.playing){
1448     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1449     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1450     this.commentTimer.stop();
1451     this.commentTimer.reset();
1452     videoDisplay.pause();
1453     pausing = true;
1454     }else{
1455     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1456     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1457     if(pausing){
1458     this.videoPlayer.videoController.slider_timeline.enabled = true;
1459     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1460     this.videoDisplay.play();
1461     this.time = (new Date).time;
1462     this.commentTimer.start();
1463     }else{
1464     this.videoPlayer.videoController.slider_timeline.enabled = true;
1465     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1466 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1467 mineap 370 }
1468     pausing = false;
1469     }
1470     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1471     if(isMovieClipPlaying){
1472     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1473     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1474     this.commentTimer.stop();
1475     this.commentTimer.reset();
1476     mc.stop();
1477     isMovieClipPlaying = false;
1478     pausing = true;
1479     }else{
1480     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1481     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1482     if(pausing){
1483     this.videoPlayer.videoController.slider_timeline.enabled = true;
1484     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1485     mc.play();
1486     isMovieClipPlaying = true;
1487     this.time = (new Date).time;
1488     this.commentTimer.start();
1489     }else{
1490     this.videoPlayer.canvas_video.removeAllChildren();
1491     this.videoPlayer.videoController.slider_timeline.enabled = true;
1492     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1493 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1494    
1495 mineap 370 }
1496     pausing = false;
1497     }
1498     }else{
1499     if(this.videoPlayer != null && this.videoPlayer.title != null){
1500     this.playMovie(this.videoPlayer.title);
1501     }
1502     }
1503    
1504     }catch(error:Error){
1505     trace(error.getStackTrace());
1506     logManager.addLog("���������������������������:" + error + ":" + error.getStackTrace());
1507     }
1508    
1509     }
1510    
1511    
1512     /**
1513     * ������������������������������������������������
1514     * @return
1515     *
1516     */
1517     public function stop():void
1518     {
1519     try{
1520    
1521     pausing = false;
1522    
1523     if(videoInfoView.isShowAlwaysNicowariArea){
1524     videoPlayer.showNicowariArea();
1525     }else{
1526     videoPlayer.hideNicowariArea();
1527     }
1528    
1529     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1530     videoPlayer.canvas_video_back.setFocus();
1531     videoPlayer.label_downloadStatus.text = "";
1532     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1533     }
1534    
1535     if(this.movieEndTimer != null){
1536     this.movieEndTimer.stop();
1537     this.movieEndTimer = null;
1538     }
1539    
1540     if(renewDownloadManager != null){
1541     try{
1542     renewDownloadManager.close();
1543     renewDownloadManager = null;
1544     logManager.addLog("���������������������������������������������������������");
1545     }catch(error:Error){
1546     trace(error);
1547     }
1548     }else{
1549    
1550     this.videoPlayer.videoController.button_play.enabled = true;
1551     this.videoPlayer.videoController_under.button_play.enabled = true;
1552     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1553     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1554    
1555     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1556     this.videoPlayer.videoController.slider_timeline.value = 0;
1557    
1558     this.commentTimerVpos = 0;
1559     this.commentTimer.stop();
1560     this.commentTimer.reset();
1561     this.commentManager.removeAll();
1562    
1563     //���������������������������������������������
1564     this.destructor();
1565    
1566     //������������������������������������������������������
1567     videoPlayer.canvas_nicowari.removeAllChildren();
1568     if(nicowariMC != null){
1569     this.pauseByNicowari(true);
1570     }
1571    
1572     }
1573    
1574     }catch(error:Error){
1575     trace(error.getStackTrace());
1576     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1577     }
1578    
1579     }
1580    
1581    
1582     /**
1583 mineap 427 * ���������������������������������������������������������������������������������
1584     *
1585     */
1586     public function goToTop():void
1587     {
1588     try{
1589    
1590     pausing = false;
1591    
1592     if(videoInfoView.isShowAlwaysNicowariArea){
1593     videoPlayer.showNicowariArea();
1594     }else{
1595     videoPlayer.hideNicowariArea();
1596     }
1597    
1598     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1599     videoPlayer.canvas_video_back.setFocus();
1600     videoPlayer.label_downloadStatus.text = "";
1601     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1602     }
1603    
1604     if(this.movieEndTimer != null){
1605     this.movieEndTimer.stop();
1606     this.movieEndTimer = null;
1607     }
1608    
1609     if(renewDownloadManager != null){
1610     try{
1611     renewDownloadManager.close();
1612     renewDownloadManager = null;
1613     logManager.addLog("���������������������������������������������������������");
1614     }catch(error:Error){
1615     trace(error);
1616     }
1617     }else{
1618    
1619     this.videoPlayer.videoController.button_play.enabled = true;
1620     this.videoPlayer.videoController_under.button_play.enabled = true;
1621     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1622     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1623    
1624     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1625     this.videoPlayer.videoController.slider_timeline.value = 0;
1626    
1627     this.commentTimerVpos = 0;
1628     this.commentTimer.stop();
1629     this.commentTimer.reset();
1630    
1631     var playing:Boolean = false;
1632     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1633     if(videoDisplay != null && videoDisplay.playing){
1634     playing = true;
1635     }
1636     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1637     if(isMovieClipPlaying){
1638     playing = true;
1639     }
1640     }
1641    
1642     if(playing){
1643     this.play();
1644     }
1645     this.seek(0);
1646    
1647    
1648     //������������������������������������������������������
1649     videoPlayer.canvas_nicowari.removeAllChildren();
1650     if(nicowariMC != null){
1651     this.pauseByNicowari(true);
1652     }
1653    
1654     }
1655    
1656     }catch(error:Error){
1657     trace(error.getStackTrace());
1658     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1659     }
1660     }
1661    
1662     /**
1663 mineap 370 * VideoDisplay���������������������������������������������������������
1664     * @param videoDisplay
1665     *
1666     */
1667     private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1668 mineap 381 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1669     videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1670     videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1671 mineap 370 }
1672    
1673     /**
1674     * VideoDisplay���������������������������������������������������������
1675     * @param videoDisplay
1676     *
1677     */
1678     private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1679 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1680     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1681 mineap 370 }
1682 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){
1683     videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1684 mineap 370 }
1685     if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){
1686 mineap 381 videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1687 mineap 370 }
1688     }
1689    
1690     /**
1691     *
1692 mineap 381 * @param event
1693     *
1694     */
1695     private function durationChangeEventHandler(event:TimeEvent):void{
1696     if(videoInfoView.isResizePlayerEachPlay){
1697     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1698     }else{
1699     resizePlayerJustVideoSize();
1700     }
1701     }
1702    
1703     /**
1704     *
1705 mineap 370 * @param loader
1706     *
1707     */
1708     // private function removeMovieClipEventHandlers(loader:Loader):void{
1709     // if(loader.hasEventListener(Event.COMPLETE)){
1710     // loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1711     // }
1712     // }
1713    
1714     /**
1715     * ������������������������������������������������������������������������������
1716     * @return
1717     *
1718     */
1719     public function getStreamingProgress():int{
1720     var value:int = 0;
1721     if(isStreamingPlay){
1722     if(videoDisplay != null){
1723     value = (videoDisplay.bytesLoaded*100 / videoDisplay.bytesTotal);
1724     }else if(loader != null && loader.contentLoaderInfo != null){
1725     value = (loader.contentLoaderInfo.bytesLoaded*100 / loader.contentLoaderInfo.bytesTotal);
1726     }else{
1727     value = 100;
1728     }
1729     }else{
1730     value = 100;
1731     }
1732     return value;
1733     }
1734    
1735 mineap 531
1736 mineap 370 /**
1737 mineap 531 * ���������������������������������������������������MB/s������������������
1738     * @return
1739 mineap 370 *
1740 mineap 531 */
1741     public function getStreamingSpeed():Number
1742     {
1743    
1744     // timer������1000ms���������������������
1745    
1746     var value:Number = 0;
1747     if (isStreamingPlay)
1748     {
1749     if(videoDisplay != null){
1750     value = videoDisplay.bytesLoaded - this.lastLoadedBytes;
1751     this.lastLoadedBytes = videoDisplay.bytesLoaded;
1752     }else if(loader != null && loader.contentLoaderInfo != null){
1753     value = loader.contentLoaderInfo.bytesLoaded - this.lastLoadedBytes;
1754     this.lastLoadedBytes = loader.contentLoaderInfo.bytesLoaded;
1755     }else{
1756     return value;
1757     }
1758    
1759     trace(value);
1760    
1761     //MB���������
1762     value = value / 1000000;
1763    
1764     // MB/s���������
1765     value = value / 1;
1766     }
1767     else
1768     {
1769     // ���������������
1770     }
1771    
1772     return value;
1773    
1774     }
1775    
1776     /**
1777     *
1778 mineap 370 * @return
1779     *
1780     */
1781     public function get bytesLoaded():Number{
1782    
1783     var value:Number = 0.0;
1784    
1785     if(videoDisplay != null){
1786     value = videoDisplay.bytesLoaded;
1787     }else if(loader != null && loader.contentLoaderInfo != null){
1788     value = loader.contentLoaderInfo.bytesLoaded;
1789     }
1790    
1791     return value;
1792     }
1793    
1794     /**
1795     *
1796     * @param event
1797     *
1798     */
1799     private function streamingProgressHandler(event:TimerEvent):void{
1800     if(isStreamingPlay){
1801     var value:int = getStreamingProgress();
1802 mineap 531 var speed:Number = getStreamingSpeed();
1803 mineap 370 if(value >= 100){
1804     this.videoPlayer.label_playSourceStatus.text = "Streaming:100%";
1805     videoPlayer.videoController.resetStatusAlpha();
1806     if(streamingProgressTimer != null){
1807     streamingProgressTimer.stop();
1808     }
1809    
1810     // 100%���������������������������������������������������������������������������������������
1811     if(this.bytesLoaded <= 64){
1812 mineap 580
1813     var maxCount:int = 1;
1814     var confValue:String = ConfigManager.getInstance().getItem("streamingRetryMaxCount");
1815     if(confValue == null)
1816     {
1817     ConfigManager.getInstance().removeItem("streamingRetryMaxCount");
1818     ConfigManager.getInstance().setItem("streamingRetryMaxCount", maxCount);
1819     }
1820     else
1821     {
1822     maxCount = int(confValue);
1823     }
1824    
1825     if(this.streamingRetryCount <= maxCount ){
1826 mineap 370 // ���������������
1827     this.streamingRetryCount++;
1828 mineap 573 var timeStr:String = String(int(10000*this.streamingRetryCount / 1000));
1829 mineap 370 stop();
1830     logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1831 mineap 573 videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + timeStr + "���������" + this.streamingRetryCount +"������ )";
1832 mineap 370
1833     if(nicoVideoAccessRetryTimer != null){
1834     nicoVideoAccessRetryTimer.stop();
1835     nicoVideoAccessRetryTimer = null;
1836     }
1837 mineap 573 nicoVideoAccessRetryTimer = new Timer(10000*this.streamingRetryCount, 1);
1838 mineap 370 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1839     (event.currentTarget as Timer).stop();
1840     play();
1841     });
1842     nicoVideoAccessRetryTimer.start();
1843    
1844     }else{
1845     stop();
1846     logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1847     videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1848     }
1849     }else{
1850     // ������������������
1851     this.streamingRetryCount = 0;
1852     }
1853    
1854     }else{
1855    
1856 mineap 531 var formatter:NumberFormatter = new NumberFormatter();
1857     formatter.precision = 2;
1858     var str:String = formatter.format(speed) + "MB/s"
1859 mineap 370
1860 mineap 531 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
1861 mineap 370 }
1862     }else{
1863     if(streamingProgressTimer != null){
1864     streamingProgressTimer.stop();
1865     }
1866     }
1867     }
1868    
1869     /**
1870     * ������������������������������������������������������
1871     * @param evt
1872     *
1873     */
1874 mineap 381 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
1875 mineap 370 try{
1876     var allSec:String="00",allMin:String="0";
1877     var nowSec:String="00",nowMin:String="0";
1878    
1879 mineap 381 this.commentTimerVpos = event.time*1000;
1880 mineap 370
1881 mineap 381 nowSec = String(int(this.videoDisplay.currentTime%60));
1882     nowMin = String(int(this.videoDisplay.currentTime/60));
1883 mineap 370
1884 mineap 381 allSec = String(int(this.videoDisplay.duration%60));
1885     allMin = String(int(this.videoDisplay.duration/60));
1886 mineap 370
1887     if(nowSec.length == 1){
1888     nowSec = "0" + nowSec;
1889     }
1890     if(allSec.length == 1){
1891     allSec = "0" + allSec;
1892     }
1893    
1894     videoPlayer.videoController_under.slider_timeline.enabled = true;
1895     videoPlayer.videoController_under.slider_timeline.minimum = 0;
1896 mineap 381 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1897 mineap 370 if(!this.sliderChanging){
1898    
1899 mineap 381 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1900     this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1901     videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
1902 mineap 370
1903     }
1904     videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1905     videoPlayer.videoController_under.slider_timeline.enabled = true;
1906    
1907     videoPlayer.videoController.slider_timeline.enabled = true;
1908     videoPlayer.videoController.slider_timeline.minimum = 0;
1909 mineap 381 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1910 mineap 370 if(!this.sliderChanging){
1911 mineap 381 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
1912 mineap 370 }
1913     videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1914     videoPlayer.videoController.slider_timeline.enabled = true;
1915     }catch(error:Error){
1916 mineap 381 VideoDisplay(event.currentTarget).stop();
1917 mineap 370 trace(error.getStackTrace());
1918     }
1919     }
1920    
1921     /**
1922     * ������������������������������������������������������������������������
1923     * @param evt
1924     *
1925     */
1926 mineap 381 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
1927 mineap 370
1928     if(movieEndTimer != null){
1929     movieEndTimer.stop();
1930     movieEndTimer = null;
1931     }
1932     //���������������������������������������������������������
1933     movieEndTimer = new Timer(2000, 1);
1934     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
1935     movieEndTimer.start();
1936    
1937     }
1938    
1939     /**
1940     *
1941     *
1942     */
1943     private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
1944 mineap 512 if (!isCounted)
1945     {
1946 mineap 370 //���������������������
1947     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
1948 mineap 512 if (videoId != null)
1949     {
1950 mineap 370 addVideoPlayCount(videoId, true);
1951     }
1952     isCounted = true;
1953     }
1954    
1955     logManager.addLog("***���������������***");
1956    
1957 mineap 512 if (videoPlayer.isRepeat)
1958     {
1959    
1960     /* ���������1��������������� */
1961    
1962     if (isPlayListingPlay)
1963     {
1964     if(isStreamingPlay)
1965     {
1966 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1967     this.seek(0);
1968 mineap 512 if (this.videoDisplay != null)
1969     {
1970 mineap 370 this.videoDisplay.play();
1971     }
1972 mineap 512 }
1973     else
1974     {
1975 mineap 370 logManager.addLog("***���������������������(������������)***");
1976     this.stop();
1977 mineap 512 playMovie(
1978     this.videoInfoView.getPlayListUrl(playingIndex),
1979     this.videoInfoView.playList,
1980     playingIndex,
1981     this.videoPlayer.title);
1982 mineap 370
1983     }
1984 mineap 512 }
1985     else if(isStreamingPlay)
1986     {
1987 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1988     this.seek(0);
1989 mineap 512 if (this.videoDisplay != null)
1990     {
1991 mineap 370 this.videoDisplay.play();
1992     }
1993 mineap 512 }
1994     else
1995     {
1996 mineap 370 logManager.addLog("***���������������������(������������)***");
1997     this.stop();
1998     this.play();
1999     }
2000 mineap 512 }
2001     else
2002     {
2003    
2004     /* ������������������������������ */
2005    
2006 mineap 370 this.stop();
2007 mineap 512
2008     if (isPlayListingPlay)
2009     {
2010    
2011     /* ��������������������������� */
2012    
2013 mineap 370 logManager.addLog("***���������������(������������)***");
2014     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2015 mineap 512 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2016     {
2017     /* ������������������������������������ */
2018 mineap 370 playingIndex = 0;
2019 mineap 512 if (this.videoPlayer.videoInfoView.isRepeatAll())
2020     {
2021     playMovie(
2022     this.videoInfoView.getPlayListUrl(playingIndex),
2023     this.videoInfoView.playList,
2024     playingIndex,
2025     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2026 mineap 370 }
2027 mineap 512 }
2028     else
2029     {
2030     /* ������������������������������������ */
2031 mineap 370 playingIndex++;
2032 mineap 512 playMovie(
2033     this.videoInfoView.getPlayListUrl(playingIndex),
2034     this.videoInfoView.playList,
2035     playingIndex,
2036     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2037 mineap 370 }
2038     }
2039     }
2040     }
2041    
2042    
2043     /**
2044     * SWF������������������������������������������������������������������
2045     *
2046     */
2047     private function movieClipCompleteHandler():void{
2048    
2049     this.lastFrame = 0;
2050     this.lastNicowariFrame = 0;
2051    
2052     if(movieEndTimer != null){
2053     movieEndTimer.stop();
2054     movieEndTimer = null;
2055     }
2056     //���������������������������������������������������������
2057     movieEndTimer = new Timer(2000, 1);
2058     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2059     movieEndTimer.start();
2060    
2061    
2062     }
2063    
2064     /**
2065     *
2066     *
2067     */
2068     private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2069     if(!isCounted){
2070     //���������������������
2071     var videoId:String = LibraryUtil.getVideoKey(this.source);
2072     if(videoId == null){
2073     //���������������������������������������������������������
2074     videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2075     }
2076     if(videoId != null){
2077     addVideoPlayCount(videoId, true);
2078     }
2079     isCounted = true;
2080     }
2081    
2082     logManager.addLog("***���������������***");
2083     this.lastFrame = 0;
2084     this.lastNicowariFrame = 0;
2085    
2086     if(videoPlayer.isRepeat){
2087     if(isPlayListingPlay){
2088     if(isStreamingPlay){
2089     logManager.addLog("***���������������������(���������������������)***");
2090     this.seek(0);
2091     }else{
2092     logManager.addLog("***���������������������(������������)***");
2093     this.stop();
2094     mc.gotoAndStop(0);
2095     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2096     playingIndex, this.videoPlayer.title);
2097     }
2098     }else if(isStreamingPlay){
2099     logManager.addLog("***���������������������(���������������������)***");
2100     this.seek(0);
2101     }else{
2102     logManager.addLog("***���������������������(������������)***");
2103     this.stop();
2104     mc.gotoAndStop(0);
2105     this.play();
2106     }
2107     }else{
2108     this.stop();
2109     mc.gotoAndStop(0);
2110     if(isPlayListingPlay){
2111     logManager.addLog("***���������������(������������)***");
2112     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2113     if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2114     playingIndex = 0;
2115     if(this.videoPlayer.videoInfoView.isRepeatAll()){
2116     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2117     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2118     }
2119     }else{
2120     playingIndex++;
2121     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2122     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2123     }
2124     }
2125     }
2126    
2127     isMovieClipStopping = false;
2128     }
2129    
2130    
2131     /**
2132     * ���������������������ID������������������������������������������������������������1���������������
2133     * @param videoId ���������������������������������������������������ID
2134     * @param isSave ���������������������������������������������������
2135     */
2136     private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2137     var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2138     if(nnddVideo != null){
2139     nnddVideo.playCount = nnddVideo.playCount + 1;
2140     libraryManager.update(nnddVideo, isSave);
2141     trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2142     }else{
2143     //���������������
2144     trace("������������������������������������:" + videoId);
2145     }
2146     }
2147    
2148     /**
2149     * ���������������������������������������������
2150     * swf���������������SWF���������������������������������������������������
2151     *
2152     * @param event
2153     *
2154     */
2155     private function commentTimerHandler(event:TimerEvent):void{
2156    
2157     if(isPlayerClosing){
2158     if(commentTimer != null){
2159     commentTimer.stop();
2160     commentTimer.reset();
2161     }
2162     return;
2163     }
2164    
2165 mineap 512 // ���������������
2166 mineap 370 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2167    
2168     var nowSec:String="00",nowMin:String="0";
2169     nowSec = String(int(commentTimerVpos/1000%60));
2170     nowMin = String(int(commentTimerVpos/1000/60));
2171     if(nowSec.length == 1){
2172     nowSec = "0" + nowSec;
2173     }
2174     var nowTime:String = nowMin + ":" + nowSec;
2175    
2176     var allSec:String="00",allMin:String="0"
2177     if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2178     allSec = String(int(mc.totalFrames/swfFrameRate%60));
2179     allMin = String(int(mc.totalFrames/swfFrameRate/60));
2180     }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2181 mineap 381 allSec = String(int(videoDisplay.duration%60));
2182     allMin = String(int(videoDisplay.duration/60));
2183 mineap 370 }
2184     if(allSec.length == 1){
2185     allSec = "0" + allSec;
2186     }
2187     var allTime:String = allMin +":" + allSec;
2188    
2189     if(!isCounted && commentTimerVpos > 10000){
2190     //���������������������
2191     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2192     if(videoId != null){
2193     addVideoPlayCount(videoId, false);
2194     }
2195     isCounted = true;
2196     }
2197    
2198     //SWF���������������������������������������������������������������������
2199     if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2200    
2201     videoPlayer.videoController_under.slider_timeline.enabled = true;
2202     videoPlayer.videoController_under.slider_timeline.minimum = 0;
2203     videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2204    
2205     videoPlayer.videoController.slider_timeline.enabled = true;
2206     videoPlayer.videoController.slider_timeline.minimum = 0;
2207     videoPlayer.videoController.slider_timeline.maximum = mc.totalFrames;
2208    
2209     if(!this.sliderChanging){
2210     videoPlayer.videoController_under.slider_timeline.value = mc.currentFrame;
2211     videoPlayer.videoController.slider_timeline.value = mc.currentFrame;
2212     }
2213    
2214     // trace(nowMin + "/" + nowSec);
2215    
2216     videoPlayer.videoController_under.label_time.text = nowTime + "/"+ allTime;
2217     videoPlayer.videoController.label_time.text = nowTime + "/"+ allTime;
2218    
2219     if(mc.currentFrame >= mc.totalFrames-1 || mc.currentFrame == this.lastFrame ){
2220     this.lastFrame = mc.currentFrame;
2221     //���������movieClip������������������������������������������������������
2222     if(!isMovieClipStopping){
2223     isMovieClipStopping = true;
2224     movieClipCompleteHandler();
2225     }
2226     return;
2227     }else{
2228     if(!isMovieClipStopping){
2229     this.lastFrame = mc.currentFrame;
2230     }
2231     }
2232     }
2233    
2234     var tempTime:Number = (new Date).time;
2235    
2236     //SWF������������������������������������������������������������������
2237     if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2238     this.commentTimerVpos += (tempTime - this.time);
2239     }
2240    
2241     //���������������������
2242     var commentArray:Vector.<