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 569 - (hide annotations) (download)
Fri May 20 12:21:17 2011 UTC (12 years, 10 months ago) by mineap
File size: 154618 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.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 mineap 569 else
1413     {
1414     if (PlayerController.WINDOW_TYPE_FLV == this.windowType)
1415     {
1416     if (videoInfoView != null)
1417     {
1418     this.setVideoSmoothing(videoInfoView.isSmoothing);
1419     }
1420     }
1421     }
1422 mineap 370
1423     }catch(error:Error){ //������������������������������������������������������������������������������������������
1424     trace(error.getStackTrace());
1425     logManager.addLog("������������������������������������������:" + error + ", " + error.getStackTrace());
1426     stop();
1427     destructor();
1428     }
1429     }
1430    
1431    
1432     /**
1433     * ������������������������������������������������������������������
1434     * ���������������������������������������������������������������������������������������������
1435     * @return
1436     *
1437     */
1438     public function play():void
1439     {
1440     try{
1441     videoPlayer.canvas_video_back.setFocus();
1442    
1443     var newComments:Comments = null;
1444     videoPlayer.canvas_video.toolTip = null;
1445     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1446     if(videoDisplay != null && videoDisplay.playing){
1447     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1448     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1449     this.commentTimer.stop();
1450     this.commentTimer.reset();
1451     videoDisplay.pause();
1452     pausing = true;
1453     }else{
1454     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1455     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1456     if(pausing){
1457     this.videoPlayer.videoController.slider_timeline.enabled = true;
1458     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1459     this.videoDisplay.play();
1460     this.time = (new Date).time;
1461     this.commentTimer.start();
1462     }else{
1463     this.videoPlayer.videoController.slider_timeline.enabled = true;
1464     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1465 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1466 mineap 370 }
1467     pausing = false;
1468     }
1469     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1470     if(isMovieClipPlaying){
1471     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1472     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1473     this.commentTimer.stop();
1474     this.commentTimer.reset();
1475     mc.stop();
1476     isMovieClipPlaying = false;
1477     pausing = true;
1478     }else{
1479     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1480     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1481     if(pausing){
1482     this.videoPlayer.videoController.slider_timeline.enabled = true;
1483     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1484     mc.play();
1485     isMovieClipPlaying = true;
1486     this.time = (new Date).time;
1487     this.commentTimer.start();
1488     }else{
1489     this.videoPlayer.canvas_video.removeAllChildren();
1490     this.videoPlayer.videoController.slider_timeline.enabled = true;
1491     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1492 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1493    
1494 mineap 370 }
1495     pausing = false;
1496     }
1497     }else{
1498     if(this.videoPlayer != null && this.videoPlayer.title != null){
1499     this.playMovie(this.videoPlayer.title);
1500     }
1501     }
1502    
1503     }catch(error:Error){
1504     trace(error.getStackTrace());
1505     logManager.addLog("���������������������������:" + error + ":" + error.getStackTrace());
1506     }
1507    
1508     }
1509    
1510    
1511     /**
1512     * ������������������������������������������������
1513     * @return
1514     *
1515     */
1516     public function stop():void
1517     {
1518     try{
1519    
1520     pausing = false;
1521    
1522     if(videoInfoView.isShowAlwaysNicowariArea){
1523     videoPlayer.showNicowariArea();
1524     }else{
1525     videoPlayer.hideNicowariArea();
1526     }
1527    
1528     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1529     videoPlayer.canvas_video_back.setFocus();
1530     videoPlayer.label_downloadStatus.text = "";
1531     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1532     }
1533    
1534     if(this.movieEndTimer != null){
1535     this.movieEndTimer.stop();
1536     this.movieEndTimer = null;
1537     }
1538    
1539     if(renewDownloadManager != null){
1540     try{
1541     renewDownloadManager.close();
1542     renewDownloadManager = null;
1543     logManager.addLog("���������������������������������������������������������");
1544     }catch(error:Error){
1545     trace(error);
1546     }
1547     }else{
1548    
1549     this.videoPlayer.videoController.button_play.enabled = true;
1550     this.videoPlayer.videoController_under.button_play.enabled = true;
1551     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1552     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1553    
1554     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1555     this.videoPlayer.videoController.slider_timeline.value = 0;
1556    
1557     this.commentTimerVpos = 0;
1558     this.commentTimer.stop();
1559     this.commentTimer.reset();
1560     this.commentManager.removeAll();
1561    
1562     //���������������������������������������������
1563     this.destructor();
1564    
1565     //������������������������������������������������������
1566     videoPlayer.canvas_nicowari.removeAllChildren();
1567     if(nicowariMC != null){
1568     this.pauseByNicowari(true);
1569     }
1570    
1571     }
1572    
1573     }catch(error:Error){
1574     trace(error.getStackTrace());
1575     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1576     }
1577    
1578     }
1579    
1580    
1581     /**
1582 mineap 427 * ���������������������������������������������������������������������������������
1583     *
1584     */
1585     public function goToTop():void
1586     {
1587     try{
1588    
1589     pausing = false;
1590    
1591     if(videoInfoView.isShowAlwaysNicowariArea){
1592     videoPlayer.showNicowariArea();
1593     }else{
1594     videoPlayer.hideNicowariArea();
1595     }
1596    
1597     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1598     videoPlayer.canvas_video_back.setFocus();
1599     videoPlayer.label_downloadStatus.text = "";
1600     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1601     }
1602    
1603     if(this.movieEndTimer != null){
1604     this.movieEndTimer.stop();
1605     this.movieEndTimer = null;
1606     }
1607    
1608     if(renewDownloadManager != null){
1609     try{
1610     renewDownloadManager.close();
1611     renewDownloadManager = null;
1612     logManager.addLog("���������������������������������������������������������");
1613     }catch(error:Error){
1614     trace(error);
1615     }
1616     }else{
1617    
1618     this.videoPlayer.videoController.button_play.enabled = true;
1619     this.videoPlayer.videoController_under.button_play.enabled = true;
1620     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1621     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1622    
1623     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1624     this.videoPlayer.videoController.slider_timeline.value = 0;
1625    
1626     this.commentTimerVpos = 0;
1627     this.commentTimer.stop();
1628     this.commentTimer.reset();
1629    
1630     var playing:Boolean = false;
1631     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1632     if(videoDisplay != null && videoDisplay.playing){
1633     playing = true;
1634     }
1635     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1636     if(isMovieClipPlaying){
1637     playing = true;
1638     }
1639     }
1640    
1641     if(playing){
1642     this.play();
1643     }
1644     this.seek(0);
1645    
1646    
1647     //������������������������������������������������������
1648     videoPlayer.canvas_nicowari.removeAllChildren();
1649     if(nicowariMC != null){
1650     this.pauseByNicowari(true);
1651     }
1652    
1653     }
1654    
1655     }catch(error:Error){
1656     trace(error.getStackTrace());
1657     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1658     }
1659     }
1660    
1661     /**
1662 mineap 370 * VideoDisplay���������������������������������������������������������
1663     * @param videoDisplay
1664     *
1665     */
1666     private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1667 mineap 381 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1668     videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1669     videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1670 mineap 370 }
1671    
1672     /**
1673     * VideoDisplay���������������������������������������������������������
1674     * @param videoDisplay
1675     *
1676     */
1677     private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1678 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1679     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1680 mineap 370 }
1681 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){
1682     videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1683 mineap 370 }
1684     if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){
1685 mineap 381 videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1686 mineap 370 }
1687     }
1688    
1689     /**
1690     *
1691 mineap 381 * @param event
1692     *
1693     */
1694     private function durationChangeEventHandler(event:TimeEvent):void{
1695     if(videoInfoView.isResizePlayerEachPlay){
1696     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1697     }else{
1698     resizePlayerJustVideoSize();
1699     }
1700     }
1701    
1702     /**
1703     *
1704 mineap 370 * @param loader
1705     *
1706     */
1707     // private function removeMovieClipEventHandlers(loader:Loader):void{
1708     // if(loader.hasEventListener(Event.COMPLETE)){
1709     // loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1710     // }
1711     // }
1712    
1713     /**
1714     * ������������������������������������������������������������������������������
1715     * @return
1716     *
1717     */
1718     public function getStreamingProgress():int{
1719     var value:int = 0;
1720     if(isStreamingPlay){
1721     if(videoDisplay != null){
1722     value = (videoDisplay.bytesLoaded*100 / videoDisplay.bytesTotal);
1723     }else if(loader != null && loader.contentLoaderInfo != null){
1724     value = (loader.contentLoaderInfo.bytesLoaded*100 / loader.contentLoaderInfo.bytesTotal);
1725     }else{
1726     value = 100;
1727     }
1728     }else{
1729     value = 100;
1730     }
1731     return value;
1732     }
1733    
1734 mineap 531
1735 mineap 370 /**
1736 mineap 531 * ���������������������������������������������������MB/s������������������
1737     * @return
1738 mineap 370 *
1739 mineap 531 */
1740     public function getStreamingSpeed():Number
1741     {
1742    
1743     // timer������1000ms���������������������
1744    
1745     var value:Number = 0;
1746     if (isStreamingPlay)
1747     {
1748     if(videoDisplay != null){
1749     value = videoDisplay.bytesLoaded - this.lastLoadedBytes;
1750     this.lastLoadedBytes = videoDisplay.bytesLoaded;
1751     }else if(loader != null && loader.contentLoaderInfo != null){
1752     value = loader.contentLoaderInfo.bytesLoaded - this.lastLoadedBytes;
1753     this.lastLoadedBytes = loader.contentLoaderInfo.bytesLoaded;
1754     }else{
1755     return value;
1756     }
1757    
1758     trace(value);
1759    
1760     //MB���������
1761     value = value / 1000000;
1762    
1763     // MB/s���������
1764     value = value / 1;
1765     }
1766     else
1767     {
1768     // ���������������
1769     }
1770    
1771     return value;
1772    
1773     }
1774    
1775     /**
1776     *
1777 mineap 370 * @return
1778     *
1779     */
1780     public function get bytesLoaded():Number{
1781    
1782     var value:Number = 0.0;
1783    
1784     if(videoDisplay != null){
1785     value = videoDisplay.bytesLoaded;
1786     }else if(loader != null && loader.contentLoaderInfo != null){
1787     value = loader.contentLoaderInfo.bytesLoaded;
1788     }
1789    
1790     return value;
1791     }
1792    
1793     /**
1794     *
1795     * @param event
1796     *
1797     */
1798     private function streamingProgressHandler(event:TimerEvent):void{
1799     if(isStreamingPlay){
1800     var value:int = getStreamingProgress();
1801 mineap 531 var speed:Number = getStreamingSpeed();
1802 mineap 370 if(value >= 100){
1803     this.videoPlayer.label_playSourceStatus.text = "Streaming:100%";
1804     videoPlayer.videoController.resetStatusAlpha();
1805     if(streamingProgressTimer != null){
1806     streamingProgressTimer.stop();
1807     }
1808    
1809     // 100%���������������������������������������������������������������������������������������
1810     if(this.bytesLoaded <= 64){
1811     if(this.streamingRetryCount <= 3 ){
1812     // ���������������
1813     this.streamingRetryCount++;
1814     stop();
1815     logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1816     videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + this.streamingRetryCount +"������ )";
1817    
1818     if(nicoVideoAccessRetryTimer != null){
1819     nicoVideoAccessRetryTimer.stop();
1820     nicoVideoAccessRetryTimer = null;
1821     }
1822 mineap 440 nicoVideoAccessRetryTimer = new Timer(5000*this.streamingRetryCount, 1);
1823 mineap 370 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1824     (event.currentTarget as Timer).stop();
1825     play();
1826     });
1827     nicoVideoAccessRetryTimer.start();
1828    
1829     }else{
1830     stop();
1831     logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1832     videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1833     }
1834     }else{
1835     // ������������������
1836     this.streamingRetryCount = 0;
1837     }
1838    
1839     }else{
1840    
1841 mineap 531 var formatter:NumberFormatter = new NumberFormatter();
1842     formatter.precision = 2;
1843     var str:String = formatter.format(speed) + "MB/s"
1844 mineap 370
1845 mineap 531 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
1846 mineap 370 }
1847     }else{
1848     if(streamingProgressTimer != null){
1849     streamingProgressTimer.stop();
1850     }
1851     }
1852     }
1853    
1854     /**
1855     * ������������������������������������������������������
1856     * @param evt
1857     *
1858     */
1859 mineap 381 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
1860 mineap 370 try{
1861     var allSec:String="00",allMin:String="0";
1862     var nowSec:String="00",nowMin:String="0";
1863    
1864 mineap 381 this.commentTimerVpos = event.time*1000;
1865 mineap 370
1866 mineap 381 nowSec = String(int(this.videoDisplay.currentTime%60));
1867     nowMin = String(int(this.videoDisplay.currentTime/60));
1868 mineap 370
1869 mineap 381 allSec = String(int(this.videoDisplay.duration%60));
1870     allMin = String(int(this.videoDisplay.duration/60));
1871 mineap 370
1872     if(nowSec.length == 1){
1873     nowSec = "0" + nowSec;
1874     }
1875     if(allSec.length == 1){
1876     allSec = "0" + allSec;
1877     }
1878    
1879     videoPlayer.videoController_under.slider_timeline.enabled = true;
1880     videoPlayer.videoController_under.slider_timeline.minimum = 0;
1881 mineap 381 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1882 mineap 370 if(!this.sliderChanging){
1883    
1884 mineap 381 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1885     this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1886     videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
1887 mineap 370
1888     }
1889     videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1890     videoPlayer.videoController_under.slider_timeline.enabled = true;
1891    
1892     videoPlayer.videoController.slider_timeline.enabled = true;
1893     videoPlayer.videoController.slider_timeline.minimum = 0;
1894 mineap 381 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1895 mineap 370 if(!this.sliderChanging){
1896 mineap 381 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
1897 mineap 370 }
1898     videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1899     videoPlayer.videoController.slider_timeline.enabled = true;
1900     }catch(error:Error){
1901 mineap 381 VideoDisplay(event.currentTarget).stop();
1902 mineap 370 trace(error.getStackTrace());
1903     }
1904     }
1905    
1906     /**
1907     * ������������������������������������������������������������������������
1908     * @param evt
1909     *
1910     */
1911 mineap 381 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
1912 mineap 370
1913     if(movieEndTimer != null){
1914     movieEndTimer.stop();
1915     movieEndTimer = null;
1916     }
1917     //���������������������������������������������������������
1918     movieEndTimer = new Timer(2000, 1);
1919     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
1920     movieEndTimer.start();
1921    
1922     }
1923    
1924     /**
1925     *
1926     *
1927     */
1928     private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
1929 mineap 512 if (!isCounted)
1930     {
1931 mineap 370 //���������������������
1932     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
1933 mineap 512 if (videoId != null)
1934     {
1935 mineap 370 addVideoPlayCount(videoId, true);
1936     }
1937     isCounted = true;
1938     }
1939    
1940     logManager.addLog("***���������������***");
1941    
1942 mineap 512 if (videoPlayer.isRepeat)
1943     {
1944    
1945     /* ���������1��������������� */
1946    
1947     if (isPlayListingPlay)
1948     {
1949     if(isStreamingPlay)
1950     {
1951 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1952     this.seek(0);
1953 mineap 512 if (this.videoDisplay != null)
1954     {
1955 mineap 370 this.videoDisplay.play();
1956     }
1957 mineap 512 }
1958     else
1959     {
1960 mineap 370 logManager.addLog("***���������������������(������������)***");
1961     this.stop();
1962 mineap 512 playMovie(
1963     this.videoInfoView.getPlayListUrl(playingIndex),
1964     this.videoInfoView.playList,
1965     playingIndex,
1966     this.videoPlayer.title);
1967 mineap 370
1968     }
1969 mineap 512 }
1970     else if(isStreamingPlay)
1971     {
1972 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1973     this.seek(0);
1974 mineap 512 if (this.videoDisplay != null)
1975     {
1976 mineap 370 this.videoDisplay.play();
1977     }
1978 mineap 512 }
1979     else
1980     {
1981 mineap 370 logManager.addLog("***���������������������(������������)***");
1982     this.stop();
1983     this.play();
1984     }
1985 mineap 512 }
1986     else
1987     {
1988    
1989     /* ������������������������������ */
1990    
1991 mineap 370 this.stop();
1992 mineap 512
1993     if (isPlayListingPlay)
1994     {
1995    
1996     /* ��������������������������� */
1997    
1998 mineap 370 logManager.addLog("***���������������(������������)***");
1999     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2000 mineap 512 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2001     {
2002     /* ������������������������������������ */
2003 mineap 370 playingIndex = 0;
2004 mineap 512 if (this.videoPlayer.videoInfoView.isRepeatAll())
2005     {
2006     playMovie(
2007     this.videoInfoView.getPlayListUrl(playingIndex),
2008     this.videoInfoView.playList,
2009     playingIndex,
2010     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2011 mineap 370 }
2012 mineap 512 }
2013     else
2014     {
2015     /* ������������������������������������ */
2016 mineap 370 playingIndex++;
2017 mineap 512 playMovie(
2018     this.videoInfoView.getPlayListUrl(playingIndex),
2019     this.videoInfoView.playList,
2020     playingIndex,
2021     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2022 mineap 370 }
2023     }
2024     }
2025     }
2026    
2027    
2028     /**
2029     * SWF������������������������������������������������������������������
2030     *
2031     */
2032     private function movieClipCompleteHandler():void{
2033    
2034     this.lastFrame = 0;
2035     this.lastNicowariFrame = 0;
2036    
2037     if(movieEndTimer != null){
2038     movieEndTimer.stop();
2039     movieEndTimer = null;
2040     }
2041     //���������������������������������������������������������
2042     movieEndTimer = new Timer(2000, 1);
2043     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2044     movieEndTimer.start();
2045    
2046    
2047     }
2048    
2049     /**
2050     *
2051     *
2052     */
2053     private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2054     if(!isCounted){
2055     //���������������������
2056     var videoId:String = LibraryUtil.getVideoKey(this.source);
2057     if(videoId == null){
2058     //���������������������������������������������������������
2059     videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2060     }
2061     if(videoId != null){
2062     addVideoPlayCount(videoId, true);
2063     }
2064     isCounted = true;
2065     }
2066    
2067     logManager.addLog("***���������������***");
2068     this.lastFrame = 0;
2069     this.lastNicowariFrame = 0;
2070    
2071     if(videoPlayer.isRepeat){
2072     if(isPlayListingPlay){
2073     if(isStreamingPlay){
2074     logManager.addLog("***���������������������(���������������������)***");
2075     this.seek(0);
2076     }else{
2077     logManager.addLog("***���������������������(������������)***");
2078     this.stop();
2079     mc.gotoAndStop(0);
2080     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2081     playingIndex, this.videoPlayer.title);
2082     }
2083     }else if(isStreamingPlay){
2084     logManager.addLog("***���������������������(���������������������)***");
2085     this.seek(0);
2086     }else{
2087     logManager.addLog("***���������������������(������������)***");
2088     this.stop();
2089     mc.gotoAndStop(0);
2090     this.play();
2091     }
2092     }else{
2093     this.stop();
2094     mc.gotoAndStop(0);
2095     if(isPlayListingPlay){
2096     logManager.addLog("***���������������(������������)***");
2097     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2098     if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2099     playingIndex = 0;
2100     if(this.videoPlayer.videoInfoView.isRepeatAll()){
2101     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2102     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2103     }
2104     }else{
2105     playingIndex++;
2106     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2107     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2108     }
2109     }
2110     }
2111    
2112     isMovieClipStopping = false;
2113     }
2114    
2115    
2116     /**
2117     * ���������������������ID������������������������������������������������������������1���������������
2118     * @param videoId ���������������������������������������������������ID
2119     * @param isSave ���������������������������������������������������
2120     */
2121     private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2122     var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2123     if(nnddVideo != null){
2124     nnddVideo.playCount = nnddVideo.playCount + 1;
2125     libraryManager.update(nnddVideo, isSave);
2126     trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2127     }else{
2128     //���������������
2129     trace("������������������������������������:" + videoId);
2130     }
2131     }
2132    
2133     /**
2134     * ���������������������������������������������
2135     * swf���������������SWF���������������������������������������������������
2136     *
2137     * @param event
2138     *
2139     */
2140     private function commentTimerHandler(event:TimerEvent):void{
2141    
2142     if(isPlayerClosing){
2143     if(commentTimer != null){
2144     commentTimer.stop();
2145     commentTimer.reset();
2146     }
2147     return;
2148     }
2149    
2150 mineap 512 // ���������������
2151 mineap 370 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2152    
2153     var nowSec:String="00",nowMin:String="0";
2154     nowSec = String(int(commentTimerVpos/1000%60));
2155     nowMin = String(int(commentTimerVpos/1000/60));
2156     if(nowSec.length == 1){
2157     nowSec = "0" + nowSec;
2158     }
2159     var nowTime:String = nowMin + ":" + nowSec;
2160    
2161     var allSec:String="00",allMin:String="0"
2162     if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2163     allSec = String(int(mc.totalFrames/swfFrameRate%60));
2164     allMin = String(int(mc.totalFrames/swfFrameRate/60));
2165     }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2166 mineap 381 allSec = String(int(videoDisplay.duration%60));
2167     allMin = String(int(videoDisplay.duration/60));
2168 mineap 370 }
2169     if(allSec.length == 1){
2170     allSec = "0" + allSec;
2171     }
2172     var allTime:String = allMin +":" + allSec;
2173    
2174     if(!isCounted && commentTimerVpos > 10000){
2175     //���������������������
2176     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2177     if(videoId != null){
2178     addVideoPlayCount(videoId, false);
2179     }
2180     isCounted = true;
2181     }
2182    
2183     //SWF���������������������������������������������������������������������
2184     if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2185    
2186     videoPlayer.videoController_under.slider_timeline.enabled = true;
2187     videoPlayer.videoController_under.slider_timeline.minimum = 0;
2188     videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2189    
2190     videoPlayer.videoController.slider_timeline.enabled = true;
2191     videoPlayer.videoController.slider_timeline.minimum = 0;
2192     videoPlayer.videoController.slider_timeline.maximum = mc.totalFrames;
2193    
2194     if(!this.sliderChanging){
2195     videoPlayer.videoController_under.slider_timeline.value = mc.currentFrame;
2196     videoPlayer.videoController.slider_timeline.value = mc.currentFrame;
2197     }
2198    
2199     // trace(nowMin + "/" + nowSec);
2200    
2201     videoPlayer.videoController_under.label_time.text = nowTime + "/"+ allTime;
2202     videoPlayer.videoController.label_time.text = nowTime + "/"+ allTime;
2203    
2204     if(mc.currentFrame >= mc.totalFrames-1 || mc.currentFrame == this.lastFrame ){
2205     this.lastFrame = mc.currentFrame;
2206     //���������movieClip������������������������������������������������������
2207     if(!isMovieClipStopping){
2208     isMovieClipStopping = true;
2209     movieClipCompleteHandler();
2210     }
2211     return;
2212     }else{
2213     if(!isMovieClipStopping){
2214     this.lastFrame = mc.currentFrame;
2215     }
2216     }
2217     }
2218    
2219     var tempTime:Number = (new Date).time;
2220    
2221     //SWF������������������������������������������������������������������
2222     if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2223     this.commentTimerVpos += (tempTime - this.time);
2224     }
2225    
2226     //���������������������
2227     var commentArray:Vector.<NNDDComment> = this.commentManager.setComment(commentTimerVpos, (tempTime - this.time)*3, this.videoPlayer.isShowComment);
2228     this.commentManager.moveComment(tempTime/1000 - this.time/1000, videoInfoView.showCommentSec);
2229     this.commentManager.removeComment(commentTimerVpos, videoInfoView.showCommentSec * 1000);
2230     this.time = tempTime;
2231    
2232     //������������������������������������������������������
2233     if(videoPlayer.videoInfoView.checkbox_SyncComment.selected && videoPlayer.videoInfoView.visible
2234     // && (videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE
2235     // && videoInfoView.isActive)
2236     ){
2237    
2238     var lastMin:String = commentManager.getComments().lastMin;
2239    
2240     var tempNowTime:String = nowTime;
2241     if(lastMin.length == 3){
2242     //���������������3���������������:���������������������
2243     if(tempNowTime.