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