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