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 786 - (hide annotations) (download)
Sat Apr 7 13:43:13 2012 UTC (12 years ago) by mineap
File size: 163813 byte(s)
プレイリストをクリアした場合の動作を改善
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.events.AIREvent;
30     import mx.events.FlexEvent;
31     import mx.events.VideoEvent;
32     import mx.formatters.DateFormatter;
33 mineap 531 import mx.formatters.NumberFormatter;
34 mineap 370
35     import org.libspark.utils.ForcibleLoader;
36 mineap 576 import org.mineap.nicovideo4as.CommentPost;
37 mineap 370 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.FileIO;
44     import org.mineap.nndd.LogManager;
45     import org.mineap.nndd.Message;
46     import org.mineap.nndd.NNDDDownloader;
47     import org.mineap.nndd.NNDDVideoPageWatcher;
48     import org.mineap.nndd.RenewDownloadManager;
49     import org.mineap.nndd.history.HistoryManager;
50     import org.mineap.nndd.library.ILibraryManager;
51     import org.mineap.nndd.library.LibraryManagerBuilder;
52     import org.mineap.nndd.library.LocalVideoInfoLoader;
53     import org.mineap.nndd.model.NNDDComment;
54     import org.mineap.nndd.model.NNDDVideo;
55     import org.mineap.nndd.model.PlayList;
56 mineap 687 import org.mineap.nndd.model.RssType;
57 mineap 615 import org.mineap.nndd.myList.MyListManager;
58 mineap 370 import org.mineap.nndd.playList.PlayListManager;
59 mineap 381 import org.mineap.nndd.player.comment.Command;
60     import org.mineap.nndd.player.comment.CommentManager;
61     import org.mineap.nndd.player.comment.Comments;
62 mineap 530 import org.mineap.nndd.player.model.PlayerTagString;
63 mineap 565 import org.mineap.nndd.user.UserManager;
64 mineap 370 import org.mineap.nndd.util.DateUtil;
65     import org.mineap.nndd.util.IchibaBuilder;
66     import org.mineap.nndd.util.LibraryUtil;
67     import org.mineap.nndd.util.NumberUtil;
68     import org.mineap.nndd.util.PathMaker;
69     import org.mineap.nndd.util.RelationTypeUtil;
70     import org.mineap.nndd.util.ThumbInfoAnalyzer;
71     import org.mineap.nndd.util.ThumbInfoUtil;
72     import org.mineap.nndd.util.WebServiceAccessUtil;
73     import org.mineap.util.config.ConfigIO;
74     import org.mineap.util.config.ConfigManager;
75 mineap 418 import org.osmf.events.LoadEvent;
76 mineap 403 import org.osmf.events.MediaPlayerStateChangeEvent;
77 mineap 381 import org.osmf.events.TimeEvent;
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 mineap 711 public var videoPlaying:Boolean = false;
153    
154 mineap 370 private var renewDownloadManager:RenewDownloadManager;
155     private var nnddDownloaderForStreaming:NNDDDownloader;
156     private var playerHistoryManager:PlayerHistoryManager;
157     private var renewDownloadManagerForOldComment:RenewDownloadManager;
158    
159     public static const NICO_WARI_HEIGHT:int = 56;
160     public static const NICO_WARI_WIDTH:int = 544;
161    
162     public static const NICO_SWF_HEIGHT:int = 384;
163     public static const NICO_SWF_WIDTH:int = 512;
164    
165     public static const NICO_VIDEO_WINDOW_HEIGHT:int = 384;
166 mineap 529 public static const NICO_VIDEO_WINDOW_WIDTH:int = 512;
167     public static const NICO_VIDEO_WINDOW_WIDTH_WIDE_MODE:int = 640;
168 mineap 370
169 mineap 529 public static const NICO_VIDEO_PADDING:int = 10;
170    
171 mineap 370 public static const WIDE_MODE_ASPECT_RATIO:Number = 1.7;
172    
173     //������������������������������������������������������null���
174     private var playingJihou:String = null;
175    
176     private var movieEndTimer:Timer = null;
177    
178     private var isSwfConverting:Boolean = false;
179    
180     private var streamingProgressTimer:Timer = null;
181    
182     private var _videoID:String = null;
183    
184     private var nnddDownloaderForWatch:NNDDDownloader = null;
185    
186     private var lastFrame:int = 0;
187    
188     private var lastNicowariFrame:int = 0;
189    
190     private var myListLoader:MyListLoader = null;
191    
192     private var nicowariCloseTimer:Timer = null;
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 662 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount(),
915     FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
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 662 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount(),
921     FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
922 mineap 370 }
923     }
924    
925     /**
926     * ���������������������������������
927     * @param date
928     *
929     */
930     public function getOldCommentFromNico(date:Date):void{
931    
932     if(renewDownloadManagerForOldComment != null){
933     // ���������������������������
934     renewDownloadManagerForOldComment.close();
935     renewDownloadManagerForOldComment = null;
936     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
937     logManager.addLog("���������������������������������");
938    
939     }else{
940     // ������������
941    
942     videoInfoView.button_oldComment_reloadFromNico.label = "���������������";
943     logManager.addLog("������������������������������:" + DateUtil.getDateString(date));
944    
945     renewDownloadManagerForOldComment = new RenewDownloadManager(null, LogManager.instance);
946     renewDownloadManagerForOldComment.addEventListener(NNDDDownloader.GETWAYBACKKEY_API_ACCESS_FAIL, function(event:Event):void{
947     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
948     logManager.addLog("������������������������������:" + event);
949    
950 mineap 381 FlexGlobals.topLevelApplication.activate();
951 mineap 370 Alert.show("���������������������������������������������\n���������������������������������������������������������������������������������������������\n(���������������������������������������������������������������������������)", Message.M_ERROR);
952     });
953     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{
954     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
955     logManager.addLog("���������������������������������������:" + event);
956    
957     renewDownloadManagerForOldComment = null;
958     });
959     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_COMPLETE, function(event:Event):void{
960     logManager.addLog("������������������������������:" + event);
961     //������������������������������
962     reloadLocalComment(date);
963    
964     renewDownloadManagerForOldComment.close();
965     renewDownloadManagerForOldComment = null;
966    
967     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
968    
969     });
970     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_FAIL, function(event:Event):void{
971     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
972     logManager.addLog("������������������������������:" + event);
973    
974     renewDownloadManagerForOldComment = null;
975    
976 mineap 381 FlexGlobals.topLevelApplication.activate();
977 mineap 370 Alert.show("���������������������������������������������", Message.M_ERROR);
978     });
979    
980     var videoId:String = PathMaker.getVideoID(this._videoID);
981     var videoName:String = null;
982     var videoPath:File = null;
983     if(isStreamingPlay){
984     videoName = "nndd.flv";
985     videoPath = LibraryManagerBuilder.instance.libraryManager.tempDir;
986     }else{
987     videoName = PathMaker.getVideoName(this.source);
988     videoPath = new File(this.source.substring(0, this.source.lastIndexOf("/")+1))
989     }
990    
991     // maxCount���������������������������������������������������������������������������������������������
992 mineap 381 var maxCount:Number = (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount();
993 mineap 370 if(maxCount < 10000){
994     maxCount = 10000;
995     }
996    
997     // ���������������������������������������������������������������������
998 mineap 565 renewDownloadManagerForOldComment.renewForCommentOnly(UserManager.instance.user,
999     UserManager.instance.password, videoId, videoName, videoPath, true,
1000 mineap 662 date, maxCount, FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
1001 mineap 370
1002     }
1003    
1004     }
1005    
1006     /**
1007     *
1008     * @param event
1009     *
1010     */
1011 mineap 418 protected function byteloadedChangedEventHandler(event:Event):void{
1012 mineap 370 trace(event.type);
1013     if(videoInfoView.isResizePlayerEachPlay){
1014     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1015     }else{
1016     resizePlayerJustVideoSize();
1017     }
1018     }
1019    
1020     /**
1021     *
1022 mineap 418 * @param event
1023     *
1024     */
1025     protected function osmfCurrentTimeChangeEventHandler(event:TimeEvent):void{
1026     trace(event.type + ", time:" + event.time);
1027     if(event.time < 0){
1028     return;
1029     }
1030     if(videoInfoView.isResizePlayerEachPlay){
1031     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1032     }else{
1033     resizePlayerJustVideoSize();
1034     }
1035     }
1036    
1037     /**
1038     *
1039 mineap 370 * @param videoId
1040     * @return
1041     *
1042     */
1043     public function myListGroupUpdate(videoId:String):void{
1044    
1045     myListLoader = new MyListLoader();
1046     myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_SUCCESS, function(event:Event):void{
1047     var myLists:Array = myListLoader.getMyLists();
1048    
1049     if(myLists.length > 0){
1050     var myListNames:Array = new Array();
1051     var myListIds:Array = new Array();
1052    
1053     for each(var array:Array in myLists){
1054     myListNames.push(array[0]);
1055     myListIds.push(array[1]);
1056     }
1057    
1058     videoInfoView.setMyLists(myListNames, myListIds);
1059     }
1060     myListLoader.close();
1061     });
1062     myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_FAILURE, function(event:ErrorEvent):void{
1063     myListLoader.close();
1064     logManager.addLog("���������������������������������������:" + event + ":" + event.text);
1065     });
1066     myListLoader.getMyListGroup(videoId);
1067    
1068     }
1069    
1070    
1071     /**
1072     *
1073     * @param event
1074     *
1075     */
1076 mineap 403 private function mediaPlayerStateChanged(event:MediaPlayerStateChangeEvent):void
1077     {
1078 mineap 370 if(videoDisplay != null && !isPlayerClosing){
1079 mineap 403 if(event.state != MediaPlayerState.BUFFERING){
1080 mineap 370 videoPlayer.label_downloadStatus.text = "";
1081 mineap 403 videoDisplay.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1082 mineap 370 if(commentTimer != null && !commentTimer.running){
1083     time = (new Date).time;
1084     commentTimer.start();
1085     }
1086     }
1087     }else{
1088     (event.currentTarget as VideoDisplay).stop();
1089 mineap 403 (event.currentTarget as VideoDisplay).removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1090 mineap 370 destructor();
1091     }
1092     }
1093    
1094     /**
1095     *
1096     * @param event
1097     *
1098     */
1099     private function convertCompleteHandler(event:Event):void{
1100    
1101     isSwfConverting = false;
1102    
1103     if(loader != null && !isPlayerClosing){
1104    
1105     mc = LoaderInfo(event.currentTarget).loader.content as MovieClip;
1106     swfFrameRate = LoaderInfo(event.currentTarget).loader.contentLoaderInfo.frameRate;
1107     setVolume(videoPlayer.videoController.slider_volume.value);
1108    
1109     if(videoInfoView.isResizePlayerEachPlay){
1110     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1111     }else{
1112     resizePlayerJustVideoSize();
1113     }
1114    
1115     videoPlayer.label_downloadStatus.text = "";
1116    
1117     commentTimer.start();
1118     time = (new Date).time;
1119    
1120     }else{
1121    
1122     if(mc != null){
1123     mc.stop();
1124     }
1125     destructor();
1126     if(event.currentTarget as LoaderInfo){
1127     LoaderInfo(event.currentTarget).loader.unloadAndStop(true);
1128     }
1129    
1130     }
1131    
1132     LoaderInfo(event.currentTarget).loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1133    
1134     }
1135    
1136     /**
1137     * ���������������������������������������������������������������������
1138     *
1139     * @param videoPath
1140     * @param windowType
1141     * @param comments
1142     * @param ngList
1143     * @param playList ���������������������m3u���������
1144     * @param videoNameList ���������������������������������URL���������������������������������������������������������������������������������
1145     * @param playingIndex ������������������������������
1146     * @param autoPlay ������������
1147     * @param isStreamingPlay ���������������������������������������
1148     * @param downLoadedURL ���������������������URL
1149     * @return
1150     *
1151     */
1152     private function initWithPlayList(videoPath:String, windowType:int, comments:Comments, playList:Array, videoNameList:Array, playListName:String, playingIndex:int,
1153     autoPlay:Boolean = false, isStreamingPlay:Boolean = false, downLoadedURL:String = null, videoTitle:String = null):void{
1154    
1155     // this.streamingRetryCount = 0;
1156    
1157     this.playingIndex = playingIndex;
1158     this.isPlayListingPlay = true;
1159     var videoNameArray:Array = videoNameList;
1160     if(videoNameArray == null){
1161     videoNameArray = new Array();
1162     for(var i:int; i<playList.length; i++){
1163     var url:String = playList[i];
1164     videoNameArray.push(url.substring(url.lastIndexOf("/") + 1));
1165     }
1166     }
1167    
1168     if(downLoadedURL == null){
1169     downLoadedURL = videoPath;
1170     }
1171    
1172     this.videoInfoView.resetPlayList();
1173     this.videoInfoView.setPlayList(playList, videoNameArray, playListName);
1174    
1175     trace("\t"+playList);
1176    
1177     this.init(videoPath, windowType, comments, PathMaker.createThmbInfoPathByVideoPath(downLoadedURL), autoPlay, isStreamingPlay, videoTitle, true, LibraryUtil.getVideoKey(videoTitle));
1178     }
1179    
1180     /**
1181     * VideoPlayer������������������������������������������������������������������������������
1182     *
1183     * @param url
1184     * @param index
1185     * @return
1186     *
1187     */
1188     public function initForVideoPlayer(url:String, index:int):void{
1189     playMovie(url, this.videoInfoView.playList, index, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(index)));
1190     }
1191    
1192     /**
1193 mineap 487 *
1194     * @param isSmoothing
1195     *
1196     */
1197     public function setVideoSmoothing(isSmoothing:Boolean):void{
1198    
1199 mineap 529 if (videoDisplay != null && videoDisplay.videoObject != null)
1200     {
1201    
1202     if (isSmoothing)
1203     {
1204     // ������������������������
1205    
1206     if (videoDisplay.videoObject.videoWidth == videoDisplay.videoObject.width)
1207     {
1208     // ���������������������������������������������������
1209     if (videoInfoView.isSmoothingOnlyNotPixelIdenticalDimensions)
1210     {
1211     // ���������������������������������������������������������
1212     videoDisplay.videoObject.smoothing = false;
1213     }
1214     else
1215     {
1216     // ������������������������������������������������������
1217     videoDisplay.videoObject.smoothing = true;
1218     }
1219     }
1220     else
1221     {
1222     // ���������������������������������������������������������
1223     videoDisplay.videoObject.smoothing = true;
1224     }
1225    
1226     }
1227     else
1228     {
1229     // ���������������������������
1230     videoDisplay.videoObject.smoothing = false;
1231     }
1232    
1233 mineap 487 }
1234    
1235     }
1236    
1237     /**
1238 mineap 498 *
1239     * @param value 0-3 default=2
1240     *
1241     */
1242     public function setPlayerQuality(value:int):void{
1243     if(videoPlayer.stage != null){
1244    
1245     var qualityStr:String = StageQuality.HIGH;
1246     switch(value){
1247     case 0:
1248     qualityStr = StageQuality.LOW;
1249     break;
1250     case 1:
1251     qualityStr = StageQuality.MEDIUM;
1252     break;
1253     case 2:
1254     qualityStr = StageQuality.HIGH;
1255     break;
1256     case 3:
1257     qualityStr = StageQuality.BEST;
1258     break;
1259     default:
1260     qualityStr = StageQuality.HIGH;
1261     }
1262    
1263     videoPlayer.stage.quality = qualityStr;
1264     }
1265     }
1266    
1267     /**
1268 mineap 370 * videoDisplay���������������������������������������������������������������������������������������������
1269     * ���������������������������������������������������������������
1270     */
1271     public function resizePlayerJustVideoSize(windowSizeRatio:Number = -1):void{
1272    
1273     try{
1274     var ratio:Number = 1;
1275     if(windowSizeRatio != -1){
1276     ratio = windowSizeRatio;
1277     }
1278    
1279     //������������������������������
1280     var videoWindowHeight:int = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1281     var videoWindowWidth:int = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1282    
1283     //���������������������������������
1284     var nicowariWindowHeight:int = PlayerController.NICO_WARI_HEIGHT * ratio;
1285     var nicowariWindowWidth:int = PlayerController.NICO_WARI_WIDTH * ratio;
1286    
1287     //InfoView���������������������������������������
1288     if(isPlayListingPlay){
1289     if(this.videoInfoView != null){
1290     videoInfoView.showPlayingTitle(playingIndex);
1291     }
1292     }
1293    
1294     //���������������������������������������
1295     if(this.videoPlayer.stage != null && this.videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
1296     //������������������������������������������ ������������������������������������������������������������
1297     if(this.videoInfoView.isResizePlayerEachPlay || windowSizeRatio != -1){
1298    
1299 mineap 381 if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1300 mineap 370 //FLV������������
1301    
1302 mineap 487 // ���������������������������
1303 mineap 529 this.setVideoSmoothing(videoInfoView.isSmoothing);
1304 mineap 487
1305 mineap 381 if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_NICO && this.videoDisplay.videoObject.videoHeight > 0){
1306 mineap 370
1307     //��������������������������������������������������������������� && ��������������������������������������������������� (���������������������������������������������������������������������������������)
1308     var isWideVideo:Boolean = false;
1309 mineap 381 if(WIDE_MODE_ASPECT_RATIO < Number(this.videoDisplay.videoObject.videoWidth)/Number(this.videoDisplay.videoObject.videoHeight)){
1310 mineap 370 // ���������������16:9���
1311     isWideVideo = true;
1312     trace("enable 16:9 mode");
1313     }
1314    
1315     videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1316     if(this.videoInfoView.isEnableWideMode && isWideVideo){
1317     // logManager.addLog("���������(16:9)���������");
1318 mineap 529 videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH_WIDE_MODE + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1319 mineap 370 }else{
1320     // logManager.addLog("������������(4:3)���������");
1321 mineap 529 videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1322 mineap 370 }
1323    
1324 mineap 529 //������������������������������������������
1325     this.videoDisplay.setConstraintValue("left", PlayerController.NICO_VIDEO_PADDING);
1326     this.videoDisplay.setConstraintValue("right", PlayerController.NICO_VIDEO_PADDING);
1327    
1328     trace(videoDisplay.width + "," + videoDisplay.height);
1329    
1330 mineap 681 logManager.addLog("���������������������������������:" + this.videoDisplay.videoObject.videoWidth + " x " + this.videoDisplay.videoObject.videoHeight);
1331    
1332 mineap 418 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1333 mineap 370 //init������������������������������������������������������������������������������������������������������������������
1334 mineap 418 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1335 mineap 370 // resizePlayerJustVideoSize(windowSizeRatio);
1336     }
1337 mineap 418 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1338     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1339     }
1340 mineap 370
1341 mineap 381 }else if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_VIDEO && this.videoDisplay.videoObject.videoHeight > 0){
1342 mineap 370
1343     //���������������������������������������������������������������������(videoHeight���0���������������������������������������������������������������������)
1344    
1345 mineap 381 videoWindowHeight = this.videoDisplay.videoObject.videoHeight * ratio;
1346     videoWindowWidth = this.videoDisplay.videoObject.videoWidth * ratio;
1347 mineap 370
1348     this.videoDisplay.setConstraintValue("bottom", 0);
1349     this.videoDisplay.setConstraintValue("left", 0);
1350     this.videoDisplay.setConstraintValue("right", 0);
1351     this.videoDisplay.setConstraintValue("top", 0);
1352    
1353 mineap 418 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1354 mineap 370 //init������������������������������������������������������������������������������������������������������������������
1355 mineap 418 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1356 mineap 370 // resizePlayerJustVideoSize(windowSizeRatio);
1357     }
1358 mineap 418 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1359     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1360     }
1361 mineap 370 }else{
1362     //������������������������������������������������
1363     return;
1364     }
1365    
1366     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1367     //SWF������������
1368    
1369     //SWF���������������������������������������
1370     videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1371     videoWindowWidth = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1372    
1373     }
1374    
1375     //TODO ���������������VideoDisplay���������������������������������������������������������������
1376    
1377     var rate:Number = PlayerController.NICO_WARI_WIDTH / PlayerController.NICO_WARI_HEIGHT;
1378     if(videoPlayer.canvas_nicowari.height < 1 ){
1379     //������������������������������������������������������������������������������������
1380     videoWindowHeight += int(videoWindowWidth / rate);
1381     }
1382    
1383     this.videoPlayer.nativeWindow.height += int(videoWindowHeight - this.videoPlayer.canvas_video_back.height);
1384     this.videoPlayer.nativeWindow.width += int(videoWindowWidth - this.videoPlayer.canvas_video_back.width);
1385    
1386 mineap 681 if (this.videoDisplay != null)
1387     {
1388     logManager.addLog("���������������������������:" + this.videoDisplay.width + " x " + this.videoDisplay.height);
1389     }
1390    
1391 mineap 544 // (this.videoPlayer as Window).validateDisplayList();
1392     // (this.videoPlayer as Window).validateNow();
1393 mineap 370
1394     //������������������������������������������������������������������������������������������������������������������
1395     // var diffH:int = this.videoPlayer.nativeWindow.height - this.videoPlayer.stage.stageHeight;
1396     // var diffW:int = this.videoPlayer.nativeWindow.width - this.videoPlayer.stage.stageWidth;
1397    
1398     }
1399 mineap 525 else
1400     {
1401     // ������������������������������������������
1402     if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1403     //FLV������������
1404    
1405     // ���������������������������
1406 mineap 529 this.setVideoSmoothing(videoInfoView.isSmoothing);
1407 mineap 525
1408     if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1409     //init������������������������������������������������������������������������������������������������������������������
1410     videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1411     }
1412     if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1413     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1414     }
1415    
1416     }
1417    
1418     }
1419 mineap 370
1420     }
1421 mineap 569 else
1422     {
1423     if (PlayerController.WINDOW_TYPE_FLV == this.windowType)
1424     {
1425     if (videoInfoView != null)
1426     {
1427     this.setVideoSmoothing(videoInfoView.isSmoothing);
1428     }
1429     }
1430     }
1431 mineap 370
1432     }catch(error:Error){ //������������������������������������������������������������������������������������������
1433     trace(error.getStackTrace());
1434     logManager.addLog("������������������������������������������:" + error + ", " + error.getStackTrace());
1435     stop();
1436     destructor();
1437     }
1438     }
1439    
1440    
1441     /**
1442     * ������������������������������������������������������������������
1443     * ���������������������������������������������������������������������������������������������
1444     * @return
1445     *
1446     */
1447     public function play():void
1448     {
1449     try{
1450     videoPlayer.canvas_video_back.setFocus();
1451    
1452     var newComments:Comments = null;
1453     videoPlayer.canvas_video.toolTip = null;
1454     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1455     if(videoDisplay != null && videoDisplay.playing){
1456     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1457     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1458     this.commentTimer.stop();
1459     this.commentTimer.reset();
1460     videoDisplay.pause();
1461     pausing = true;
1462     }else{
1463     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1464     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1465     if(pausing){
1466     this.videoPlayer.videoController.slider_timeline.enabled = true;
1467     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1468     this.videoDisplay.play();
1469     this.time = (new Date).time;
1470     this.commentTimer.start();
1471     }else{
1472     this.videoPlayer.videoController.slider_timeline.enabled = true;
1473     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1474 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1475 mineap 370 }
1476     pausing = false;
1477     }
1478     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1479     if(isMovieClipPlaying){
1480     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1481     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1482     this.commentTimer.stop();
1483     this.commentTimer.reset();
1484     mc.stop();
1485     isMovieClipPlaying = false;
1486     pausing = true;
1487     }else{
1488     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1489     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1490     if(pausing){
1491     this.videoPlayer.videoController.slider_timeline.enabled = true;
1492     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1493     mc.play();
1494     isMovieClipPlaying = true;
1495     this.time = (new Date).time;
1496     this.commentTimer.start();
1497     }else{
1498     this.videoPlayer.canvas_video.removeAllChildren();
1499     this.videoPlayer.videoController.slider_timeline.enabled = true;
1500     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1501 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1502    
1503 mineap 370 }
1504     pausing = false;
1505     }
1506     }else{
1507     if(this.videoPlayer != null && this.videoPlayer.title != null){
1508     this.playMovie(this.videoPlayer.title);
1509     }
1510     }
1511    
1512     }catch(error:Error){
1513     trace(error.getStackTrace());
1514     logManager.addLog("���������������������������:" + error + ":" + error.getStackTrace());
1515     }
1516    
1517     }
1518    
1519    
1520     /**
1521     * ������������������������������������������������
1522     * @return
1523     *
1524     */
1525     public function stop():void
1526     {
1527     try{
1528    
1529     pausing = false;
1530    
1531     if(videoInfoView.isShowAlwaysNicowariArea){
1532     videoPlayer.showNicowariArea();
1533     }else{
1534     videoPlayer.hideNicowariArea();
1535     }
1536    
1537     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1538     videoPlayer.canvas_video_back.setFocus();
1539     videoPlayer.label_downloadStatus.text = "";
1540     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1541     }
1542    
1543     if(this.movieEndTimer != null){
1544     this.movieEndTimer.stop();
1545     this.movieEndTimer = null;
1546     }
1547    
1548     if(renewDownloadManager != null){
1549     try{
1550     renewDownloadManager.close();
1551     renewDownloadManager = null;
1552     logManager.addLog("���������������������������������������������������������");
1553     }catch(error:Error){
1554     trace(error);
1555     }
1556     }else{
1557    
1558     this.videoPlayer.videoController.button_play.enabled = true;
1559     this.videoPlayer.videoController_under.button_play.enabled = true;
1560     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1561     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1562    
1563     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1564     this.videoPlayer.videoController.slider_timeline.value = 0;
1565    
1566     this.commentTimerVpos = 0;
1567     this.commentTimer.stop();
1568     this.commentTimer.reset();
1569     this.commentManager.removeAll();
1570    
1571     //���������������������������������������������
1572     this.destructor();
1573    
1574     //������������������������������������������������������
1575     videoPlayer.canvas_nicowari.removeAllChildren();
1576     if(nicowariMC != null){
1577     this.pauseByNicowari(true);
1578     }
1579    
1580     }
1581    
1582     }catch(error:Error){
1583     trace(error.getStackTrace());
1584     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1585     }
1586    
1587     }
1588    
1589    
1590     /**
1591 mineap 427 * ���������������������������������������������������������������������������������
1592     *
1593     */
1594     public function goToTop():void
1595     {
1596     try{
1597    
1598     pausing = false;
1599    
1600     if(videoInfoView.isShowAlwaysNicowariArea){
1601     videoPlayer.showNicowariArea();
1602     }else{
1603     videoPlayer.hideNicowariArea();
1604     }
1605    
1606     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1607     videoPlayer.canvas_video_back.setFocus();
1608     videoPlayer.label_downloadStatus.text = "";
1609     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1610     }
1611    
1612     if(this.movieEndTimer != null){
1613     this.movieEndTimer.stop();
1614     this.movieEndTimer = null;
1615     }
1616    
1617     if(renewDownloadManager != null){
1618     try{
1619     renewDownloadManager.close();
1620     renewDownloadManager = null;
1621     logManager.addLog("���������������������������������������������������������");
1622     }catch(error:Error){
1623     trace(error);
1624     }
1625     }else{
1626    
1627     this.videoPlayer.videoController.button_play.enabled = true;
1628     this.videoPlayer.videoController_under.button_play.enabled = true;
1629     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1630     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1631    
1632     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1633     this.videoPlayer.videoController.slider_timeline.value = 0;
1634    
1635     this.commentTimerVpos = 0;
1636     this.commentTimer.stop();
1637     this.commentTimer.reset();
1638    
1639     var playing:Boolean = false;
1640     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1641     if(videoDisplay != null && videoDisplay.playing){
1642     playing = true;
1643     }
1644     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1645     if(isMovieClipPlaying){
1646     playing = true;
1647     }
1648     }
1649    
1650     if(playing){
1651     this.play();
1652     }
1653     this.seek(0);
1654    
1655    
1656     //������������������������������������������������������
1657     videoPlayer.canvas_nicowari.removeAllChildren();
1658     if(nicowariMC != null){
1659     this.pauseByNicowari(true);
1660     }
1661    
1662     }
1663    
1664     }catch(error:Error){
1665     trace(error.getStackTrace());
1666     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1667     }
1668     }
1669    
1670     /**
1671 mineap 370 * VideoDisplay���������������������������������������������������������
1672     * @param videoDisplay
1673     *
1674     */
1675     private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1676 mineap 381 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1677     videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1678     videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1679 mineap 370 }
1680    
1681     /**
1682     * VideoDisplay���������������������������������������������������������
1683     * @param videoDisplay
1684     *
1685     */
1686     private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1687 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1688     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1689 mineap 370 }
1690 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){
1691     videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1692 mineap 370 }
1693     if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){
1694 mineap 381 videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1695 mineap 370 }
1696     }
1697    
1698     /**
1699     *
1700 mineap 381 * @param event
1701     *
1702     */
1703     private function durationChangeEventHandler(event:TimeEvent):void{
1704     if(videoInfoView.isResizePlayerEachPlay){
1705     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1706     }else{
1707     resizePlayerJustVideoSize();
1708     }
1709     }
1710    
1711     /**
1712     *
1713 mineap 370 * @param loader
1714     *
1715     */
1716     // private function removeMovieClipEventHandlers(loader:Loader):void{
1717     // if(loader.hasEventListener(Event.COMPLETE)){
1718     // loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1719     // }
1720     // }
1721    
1722     /**
1723     * ������������������������������������������������������������������������������
1724     * @return
1725     *
1726     */
1727     public function getStreamingProgress():int{
1728     var value:int = 0;
1729     if(isStreamingPlay){
1730     if(videoDisplay != null){
1731     value = (videoDisplay.bytesLoaded*100 / videoDisplay.bytesTotal);
1732     }else if(loader != null && loader.contentLoaderInfo != null){
1733     value = (loader.contentLoaderInfo.bytesLoaded*100 / loader.contentLoaderInfo.bytesTotal);
1734     }else{
1735     value = 100;
1736     }
1737     }else{
1738     value = 100;
1739     }
1740     return value;
1741     }
1742    
1743 mineap 531
1744 mineap 370 /**
1745 mineap 531 * ���������������������������������������������������MB/s������������������
1746     * @return
1747 mineap 370 *
1748 mineap 531 */
1749     public function getStreamingSpeed():Number
1750     {
1751    
1752     // timer������1000ms���������������������
1753    
1754     var value:Number = 0;
1755     if (isStreamingPlay)
1756     {
1757     if(videoDisplay != null){
1758     value = videoDisplay.bytesLoaded - this.lastLoadedBytes;
1759     this.lastLoadedBytes = videoDisplay.bytesLoaded;
1760     }else if(loader != null && loader.contentLoaderInfo != null){
1761     value = loader.contentLoaderInfo.bytesLoaded - this.lastLoadedBytes;
1762     this.lastLoadedBytes = loader.contentLoaderInfo.bytesLoaded;
1763     }else{
1764     return value;
1765     }
1766    
1767     trace(value);
1768    
1769     //MB���������
1770     value = value / 1000000;
1771    
1772     // MB/s���������
1773     value = value / 1;
1774     }
1775     else
1776     {
1777     // ���������������
1778     }
1779    
1780     return value;
1781    
1782     }
1783    
1784     /**
1785     *
1786 mineap 370 * @return
1787     *
1788     */
1789     public function get bytesLoaded():Number{
1790    
1791     var value:Number = 0.0;
1792    
1793     if(videoDisplay != null){
1794     value = videoDisplay.bytesLoaded;
1795     }else if(loader != null && loader.contentLoaderInfo != null){
1796     value = loader.contentLoaderInfo.bytesLoaded;
1797     }
1798    
1799     return value;
1800     }
1801    
1802     /**
1803     *
1804     * @param event
1805     *
1806     */
1807     private function streamingProgressHandler(event:TimerEvent):void{
1808     if(isStreamingPlay){
1809     var value:int = getStreamingProgress();
1810 mineap 531 var speed:Number = getStreamingSpeed();
1811 mineap 370 if(value >= 100){
1812     this.videoPlayer.label_playSourceStatus.text = "Streaming:100%";
1813     videoPlayer.videoController.resetStatusAlpha();
1814     if(streamingProgressTimer != null){
1815     streamingProgressTimer.stop();
1816     }
1817    
1818     // 100%���������������������������������������������������������������������������������������
1819     if(this.bytesLoaded <= 64){
1820 mineap 580
1821     var maxCount:int = 1;
1822     var confValue:String = ConfigManager.getInstance().getItem("streamingRetryMaxCount");
1823     if(confValue == null)
1824     {
1825     ConfigManager.getInstance().removeItem("streamingRetryMaxCount");
1826     ConfigManager.getInstance().setItem("streamingRetryMaxCount", maxCount);
1827     }
1828     else
1829     {
1830     maxCount = int(confValue);
1831     }
1832    
1833     if(this.streamingRetryCount <= maxCount ){
1834 mineap 370 // ���������������
1835     this.streamingRetryCount++;
1836 mineap 573 var timeStr:String = String(int(10000*this.streamingRetryCount / 1000));
1837 mineap 370 stop();
1838     logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1839 mineap 573 videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + timeStr + "���������" + this.streamingRetryCount +"������ )";
1840 mineap 370
1841     if(nicoVideoAccessRetryTimer != null){
1842     nicoVideoAccessRetryTimer.stop();
1843     nicoVideoAccessRetryTimer = null;
1844     }
1845 mineap 573 nicoVideoAccessRetryTimer = new Timer(10000*this.streamingRetryCount, 1);
1846 mineap 370 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1847     (event.currentTarget as Timer).stop();
1848     play();
1849     });
1850     nicoVideoAccessRetryTimer.start();
1851    
1852     }else{
1853     stop();
1854     logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1855     videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1856     }
1857     }else{
1858     // ������������������
1859     this.streamingRetryCount = 0;
1860     }
1861    
1862     }else{
1863    
1864 mineap 531 var formatter:NumberFormatter = new NumberFormatter();
1865     formatter.precision = 2;
1866     var str:String = formatter.format(speed) + "MB/s"
1867 mineap 370
1868 mineap 531 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
1869 mineap 370 }
1870     }else{
1871     if(streamingProgressTimer != null){
1872     streamingProgressTimer.stop();
1873     }
1874     }
1875     }
1876    
1877     /**
1878     * ������������������������������������������������������
1879     * @param evt
1880     *
1881     */
1882 mineap 381 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
1883 mineap 370 try{
1884     var allSec:String="00",allMin:String="0";
1885     var nowSec:String="00",nowMin:String="0";
1886    
1887 mineap 381 this.commentTimerVpos = event.time*1000;
1888 mineap 370
1889 mineap 381 nowSec = String(int(this.videoDisplay.currentTime%60));
1890     nowMin = String(int(this.videoDisplay.currentTime/60));
1891 mineap 370
1892 mineap 381 allSec = String(int(this.videoDisplay.duration%60));
1893     allMin = String(int(this.videoDisplay.duration/60));
1894 mineap 370
1895     if(nowSec.length == 1){
1896     nowSec = "0" + nowSec;
1897     }
1898     if(allSec.length == 1){
1899     allSec = "0" + allSec;
1900     }
1901    
1902     videoPlayer.videoController_under.slider_timeline.enabled = true;
1903     videoPlayer.videoController_under.slider_timeline.minimum = 0;
1904 mineap 381 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1905 mineap 370 if(!this.sliderChanging){
1906    
1907 mineap 381 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1908     this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1909     videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
1910 mineap 370
1911     }
1912     videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1913     videoPlayer.videoController_under.slider_timeline.enabled = true;
1914    
1915     videoPlayer.videoController.slider_timeline.enabled = true;
1916     videoPlayer.videoController.slider_timeline.minimum = 0;
1917 mineap 381 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1918 mineap 370 if(!this.sliderChanging){
1919 mineap 381 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
1920 mineap 370 }
1921     videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1922     videoPlayer.videoController.slider_timeline.enabled = true;
1923     }catch(error:Error){
1924 mineap 381 VideoDisplay(event.currentTarget).stop();
1925 mineap 370 trace(error.getStackTrace());
1926     }
1927     }
1928    
1929     /**
1930     * ������������������������������������������������������������������������
1931     * @param evt
1932     *
1933     */
1934 mineap 381 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
1935 mineap 370
1936     if(movieEndTimer != null){
1937     movieEndTimer.stop();
1938     movieEndTimer = null;
1939     }
1940     //���������������������������������������������������������
1941     movieEndTimer = new Timer(2000, 1);
1942     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
1943     movieEndTimer.start();
1944    
1945     }
1946    
1947     /**
1948     *
1949     *
1950     */
1951     private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
1952 mineap 512 if (!isCounted)
1953     {
1954 mineap 370 //���������������������
1955     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
1956 mineap 512 if (videoId != null)
1957     {
1958 mineap 370 addVideoPlayCount(videoId, true);
1959     }
1960     isCounted = true;
1961     }
1962    
1963     logManager.addLog("***���������������***");
1964    
1965 mineap 512 if (videoPlayer.isRepeat)
1966     {
1967    
1968     /* ���������1��������������� */
1969    
1970     if (isPlayListingPlay)
1971     {
1972     if(isStreamingPlay)
1973     {
1974 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1975     this.seek(0);
1976 mineap 512 if (this.videoDisplay != null)
1977     {
1978 mineap 370 this.videoDisplay.play();
1979     }
1980 mineap 512 }
1981     else
1982     {
1983 mineap 370 logManager.addLog("***���������������������(������������)***");
1984     this.stop();
1985 mineap 751
1986     var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
1987     var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
1988     if (video != null)
1989     {
1990     url = video.getDecodeUrl();
1991     }
1992    
1993 mineap 512 playMovie(
1994 mineap 751 url,
1995 mineap 512 this.videoInfoView.playList,
1996     playingIndex,
1997     this.videoPlayer.title);
1998 mineap 370
1999     }
2000 mineap 512 }
2001     else if(isStreamingPlay)
2002     {
2003 mineap 370 logManager.addLog("***���������������������(���������������������)***");
2004     this.seek(0);
2005 mineap 512 if (this.videoDisplay != null)
2006     {
2007 mineap 370 this.videoDisplay.play();
2008     }
2009 mineap 512 }
2010     else
2011     {
2012 mineap 370 logManager.addLog("***���������������������(������������)***");
2013     this.stop();
2014     this.play();
2015     }
2016 mineap 512 }
2017     else
2018     {
2019    
2020     /* ������������������������������ */
2021    
2022 mineap 370 this.stop();
2023 mineap 512
2024     if (isPlayListingPlay)
2025     {
2026    
2027     /* ��������������������������� */
2028    
2029 mineap 370 logManager.addLog("***���������������(������������)***");
2030     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2031 mineap 512 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2032     {
2033     /* ������������������������������������ */
2034 mineap 370 playingIndex = 0;
2035 mineap 512 if (this.videoPlayer.videoInfoView.isRepeatAll())
2036     {
2037 mineap 751 var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
2038     var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
2039     if (video != null)
2040     {
2041     url = video.getDecodeUrl();
2042     }
2043    
2044 mineap 512 playMovie(
2045 mineap 751 url,
2046 mineap 512 this.videoInfoView.playList,
2047     playingIndex,
2048     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2049 mineap 370 }
2050 mineap 512 }
2051     else
2052     {
2053     /* ������������������������������������ */
2054 mineap 370 playingIndex++;
2055 mineap 751
2056     var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
2057     var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
2058     if (video != null)
2059     {
2060     url = video.getDecodeUrl();
2061     }
2062    
2063 mineap 512 playMovie(
2064 mineap 751 url,
2065 mineap 512 this.videoInfoView.playList,
2066     playingIndex,
2067     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2068 mineap 370 }
2069     }
2070     }
2071     }
2072    
2073    
2074     /**
2075     * SWF������������������������������������������������������������������
2076     *
2077     */
2078     private function movieClipCompleteHandler():void{
2079    
2080     this.lastFrame = 0;
2081     this.lastNicowariFrame = 0;
2082    
2083     if(movieEndTimer != null){
2084     movieEndTimer.stop();
2085     movieEndTimer = null;
2086     }
2087     //���������������������������������������������������������
2088     movieEndTimer = new Timer(2000, 1);
2089     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2090     movieEndTimer.start();
2091    
2092    
2093     }
2094    
2095     /**
2096     *
2097     *
2098     */
2099     private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2100     if(!isCounted){
2101     //���������������������
2102     var videoId:String = LibraryUtil.getVideoKey(this.source);
2103     if(videoId == null){
2104     //���������������������������������������������������������
2105     videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2106     }
2107     if(videoId != null){
2108     addVideoPlayCount(videoId, true);
2109     }
2110     isCounted = true;
2111     }
2112    
2113     logManager.addLog("***���������������***");
2114     this.lastFrame = 0;
2115     this.lastNicowariFrame = 0;
2116    
2117     if(videoPlayer.isRepeat){
2118     if(isPlayListingPlay){
2119     if(isStreamingPlay){
2120     logManager.addLog("***���������������������(���������������������)***");
2121     this.seek(0);
2122     }else{
2123     logManager.addLog("***���������������������(������������)***");
2124     this.stop();
2125     mc.gotoAndStop(0);
2126     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2127     playingIndex, this.videoPlayer.title);
2128     }
2129     }else if(isStreamingPlay){
2130     logManager.addLog("***���������������������(���������������������)***");
2131     this.seek(0);
2132     }else{
2133     logManager.addLog("***���������������������(������������)***");
2134     this.stop();
2135     mc.gotoAndStop(0);
2136     this.play();
2137     }
2138     }else{
2139     this.stop();
2140     mc.gotoAndStop(0);
2141     if(isPlayListingPlay){
2142     logManager.addLog("***���������������(������������)***");
2143     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2144     if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2145     playingIndex = 0;
2146     if(this.videoPlayer.videoInfoView.isRepeatAll()){
2147     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2148     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2149     }
2150     }else{
2151     playingIndex++;
2152     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2153     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2154     }
2155     }
2156     }
2157    
2158     isMovieClipStopping = false;
2159     }
2160    
2161    
2162     /**
2163     * ���������������������ID������������������������������������������������������������1���������������
2164     * @param videoId ���������������������������������������������������ID
2165     * @param isSave ���������������������������������������������������
2166     */
2167     private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2168     var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2169     if(nnddVideo != null){
2170     nnddVideo.playCount = nnddVideo.playCount + 1;
2171     libraryManager.update(nnddVideo, isSave);
2172     trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2173     }else{
2174     //���������������
2175     trace("������������������������������������:" + videoId);
2176     }
2177     }
2178    
2179     /**
2180     * ���������������������������������������������
2181     * swf���������������SWF���������������������������������������������������
2182     *
2183     * @param event
2184     *
2185     */
2186     private function commentTimerHandler(event:TimerEvent):void{
2187    
2188     if(isPlayerClosing){
2189     if(commentTimer != null){
2190     commentTimer.stop();
2191     commentTimer.reset();
2192     }
2193     return;
2194     }
2195    
2196 mineap 512 // ���������������
2197 mineap 370 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2198    
2199     var nowSec:String="00",nowMin:String="0";
2200     nowSec = String(int(commentTimerVpos/1000%60));
2201     nowMin = String(int(commentTimerVpos/1000/60));
2202     if(nowSec.length == 1){
2203     nowSec = "0" + nowSec;
2204     }
2205     var nowTime:String = nowMin + ":" + nowSec;
2206    
2207     var allSec:String="00",allMin:String="0"
2208     if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2209     allSec = String(int(mc.totalFrames/swfFrameRate%60));
2210     allMin = String(int(mc.totalFrames/swfFrameRate/60));
2211     }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2212 mineap 381 allSec = String(int(videoDisplay.duration%60));
2213     allMin = String(int(videoDisplay.duration/60));
2214 mineap 370 }
2215     if(allSec.length == 1){
2216     allSec = "0" + allSec;
2217     }
2218     var allTime:String = allMin +":" + allSec;
2219    
2220     if(!isCounted && commentTimerVpos > 10000){
2221     //���������������������
2222     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2223     if(videoId != null){
2224     addVideoPlayCount(videoId, false);
2225     }
2226     isCounted = true;
2227     }
2228    
2229     //SWF���������������������������������������������������������������������
2230     if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2231    
2232     videoPlayer.videoController_under.slider_timeline.enabled = true;
2233     videoPlayer.videoController_under.slider_timeline.minimum = 0;
2234     videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2235    
2236     videoPlayer.videoController.slider_timeline.enabled = true;
2237     videoPlayer.videoController.slider_timeline.minimum = 0;