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 576 - (hide annotations) (download)
Sat May 28 02:28:50 2011 UTC (12 years, 10 months ago) by mineap
File size: 154455 byte(s)
コメントが二重に表示される問題を修正(edvakf氏のソースをマージ)
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 573 if(this.streamingRetryCount <= 1 ){
1814 mineap 370 // ���������������
1815     this.streamingRetryCount++;
1816 mineap 573 var timeStr:String = String(int(10000*this.streamingRetryCount / 1000));
1817 mineap 370 stop();
1818     logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1819 mineap 573 videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + timeStr + "���������" + this.streamingRetryCount +"������ )";
1820 mineap 370
1821     if(nicoVideoAccessRetryTimer != null){
1822     nicoVideoAccessRetryTimer.stop();
1823     nicoVideoAccessRetryTimer = null;
1824     }
1825 mineap 573 nicoVideoAccessRetryTimer = new Timer(10000*this.streamingRetryCount, 1);
1826 mineap 370 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1827     (event.currentTarget as Timer).stop();
1828     play();
1829     });
1830     nicoVideoAccessRetryTimer.start();
1831    
1832     }else{
1833     stop();
1834     logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1835     videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1836     }
1837     }else{
1838     // ������������������
1839     this.streamingRetryCount = 0;
1840     }
1841    
1842     }else{
1843    
1844 mineap 531 var formatter:NumberFormatter = new NumberFormatter();
1845     formatter.precision = 2;
1846     var str:String = formatter.format(speed) + "MB/s"
1847 mineap 370
1848 mineap 531 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
1849 mineap 370 }
1850     }else{
1851     if(streamingProgressTimer != null){
1852     streamingProgressTimer.stop();
1853     }
1854     }
1855     }
1856    
1857     /**
1858     * ������������������������������������������������������
1859     * @param evt
1860     *
1861     */
1862 mineap 381 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
1863 mineap 370 try{
1864     var allSec:String="00",allMin:String="0";
1865     var nowSec:String="00",nowMin:String="0";
1866    
1867 mineap 381 this.commentTimerVpos = event.time*1000;
1868 mineap 370
1869 mineap 381 nowSec = String(int(this.videoDisplay.currentTime%60));
1870     nowMin = String(int(this.videoDisplay.currentTime/60));
1871 mineap 370
1872 mineap 381 allSec = String(int(this.videoDisplay.duration%60));
1873     allMin = String(int(this.videoDisplay.duration/60));
1874 mineap 370
1875     if(nowSec.length == 1){
1876     nowSec = "0" + nowSec;
1877     }
1878     if(allSec.length == 1){
1879     allSec = "0" + allSec;
1880     }
1881    
1882     videoPlayer.videoController_under.slider_timeline.enabled = true;
1883     videoPlayer.videoController_under.slider_timeline.minimum = 0;
1884 mineap 381 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1885 mineap 370 if(!this.sliderChanging){
1886    
1887 mineap 381 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1888     this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1889     videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
1890 mineap 370
1891     }
1892     videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1893     videoPlayer.videoController_under.slider_timeline.enabled = true;
1894    
1895     videoPlayer.videoController.slider_timeline.enabled = true;
1896     videoPlayer.videoController.slider_timeline.minimum = 0;
1897 mineap 381 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1898 mineap 370 if(!this.sliderChanging){
1899 mineap 381 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
1900 mineap 370 }
1901     videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1902     videoPlayer.videoController.slider_timeline.enabled = true;
1903     }catch(error:Error){
1904 mineap 381 VideoDisplay(event.currentTarget).stop();
1905 mineap 370 trace(error.getStackTrace());
1906     }
1907     }
1908    
1909     /**
1910     * ������������������������������������������������������������������������
1911     * @param evt
1912     *
1913     */
1914 mineap 381 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
1915 mineap 370
1916     if(movieEndTimer != null){
1917     movieEndTimer.stop();
1918     movieEndTimer = null;
1919     }
1920     //���������������������������������������������������������
1921     movieEndTimer = new Timer(2000, 1);
1922     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
1923     movieEndTimer.start();
1924    
1925     }
1926    
1927     /**
1928     *
1929     *
1930     */
1931     private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
1932 mineap 512 if (!isCounted)
1933     {
1934 mineap 370 //���������������������
1935     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
1936 mineap 512 if (videoId != null)
1937     {
1938 mineap 370 addVideoPlayCount(videoId, true);
1939     }
1940     isCounted = true;
1941     }
1942    
1943     logManager.addLog("***���������������***");
1944    
1945 mineap 512 if (videoPlayer.isRepeat)
1946     {
1947    
1948     /* ���������1��������������� */
1949    
1950     if (isPlayListingPlay)
1951     {
1952     if(isStreamingPlay)
1953     {
1954 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1955     this.seek(0);
1956 mineap 512 if (this.videoDisplay != null)
1957     {
1958 mineap 370 this.videoDisplay.play();
1959     }
1960 mineap 512 }
1961     else
1962     {
1963 mineap 370 logManager.addLog("***���������������������(������������)***");
1964     this.stop();
1965 mineap 512 playMovie(
1966     this.videoInfoView.getPlayListUrl(playingIndex),
1967     this.videoInfoView.playList,
1968     playingIndex,
1969     this.videoPlayer.title);
1970 mineap 370
1971     }
1972 mineap 512 }
1973     else if(isStreamingPlay)
1974     {
1975 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1976     this.seek(0);
1977 mineap 512 if (this.videoDisplay != null)
1978     {
1979 mineap 370 this.videoDisplay.play();
1980     }
1981 mineap 512 }
1982     else
1983     {
1984 mineap 370 logManager.addLog("***���������������������(������������)***");
1985     this.stop();
1986     this.play();
1987     }
1988 mineap 512 }
1989     else
1990     {
1991    
1992     /* ������������������������������ */
1993    
1994 mineap 370 this.stop();
1995 mineap 512
1996     if (isPlayListingPlay)
1997     {
1998    
1999     /* ��������������������������� */
2000    
2001 mineap 370 logManager.addLog("***���������������(������������)***");
2002     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2003 mineap 512 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2004     {
2005     /* ������������������������������������ */
2006 mineap 370 playingIndex = 0;
2007 mineap 512 if (this.videoPlayer.videoInfoView.isRepeatAll())
2008     {
2009     playMovie(
2010     this.videoInfoView.getPlayListUrl(playingIndex),
2011     this.videoInfoView.playList,
2012     playingIndex,
2013     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2014 mineap 370 }
2015 mineap 512 }
2016     else
2017     {
2018     /* ������������������������������������ */
2019 mineap 370 playingIndex++;
2020 mineap 512 playMovie(
2021     this.videoInfoView.getPlayListUrl(playingIndex),
2022     this.videoInfoView.playList,
2023     playingIndex,
2024     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2025 mineap 370 }
2026     }
2027     }
2028     }
2029    
2030    
2031     /**
2032     * SWF������������������������������������������������������������������
2033     *
2034     */
2035     private function movieClipCompleteHandler():void{
2036    
2037     this.lastFrame = 0;
2038     this.lastNicowariFrame = 0;
2039    
2040     if(movieEndTimer != null){
2041     movieEndTimer.stop();
2042     movieEndTimer = null;
2043     }
2044     //���������������������������������������������������������
2045     movieEndTimer = new Timer(2000, 1);
2046     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2047     movieEndTimer.start();
2048    
2049    
2050     }
2051    
2052     /**
2053     *
2054     *
2055     */
2056     private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2057     if(!isCounted){
2058     //���������������������
2059     var videoId:String = LibraryUtil.getVideoKey(this.source);
2060     if(videoId == null){
2061     //���������������������������������������������������������
2062     videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2063     }
2064     if(videoId != null){
2065     addVideoPlayCount(videoId, true);
2066     }
2067     isCounted = true;
2068     }
2069    
2070     logManager.addLog("***���������������***");
2071     this.lastFrame = 0;
2072     this.lastNicowariFrame = 0;
2073    
2074     if(videoPlayer.isRepeat){
2075     if(isPlayListingPlay){
2076     if(isStreamingPlay){
2077     logManager.addLog("***���������������������(���������������������)***");
2078     this.seek(0);
2079     }else{
2080     logManager.addLog("***���������������������(������������)***");
2081     this.stop();
2082     mc.gotoAndStop(0);
2083     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2084     playingIndex, this.videoPlayer.title);
2085     }
2086     }else if(isStreamingPlay){
2087     logManager.addLog("***���������������������(���������������������)***");
2088     this.seek(0);
2089     }else{
2090     logManager.addLog("***���������������������(������������)***");
2091     this.stop();
2092     mc.gotoAndStop(0);
2093     this.play();
2094     }
2095     }else{
2096     this.stop();
2097     mc.gotoAndStop(0);
2098     if(isPlayListingPlay){
2099     logManager.addLog("***���������������(������������)***");
2100     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2101     if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2102     playingIndex = 0;
2103     if(this.videoPlayer.videoInfoView.isRepeatAll()){
2104     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2105     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2106     }
2107     }else{
2108     playingIndex++;
2109     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2110     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2111     }
2112     }
2113     }
2114    
2115     isMovieClipStopping = false;
2116     }
2117    
2118    
2119     /**
2120     * ���������������������ID������������������������������������������������������������1���������������
2121     * @param videoId ���������������������������������������������������ID
2122     * @param isSave ���������������������������������������������������
2123     */
2124     private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2125     var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2126     if(nnddVideo != null){
2127     nnddVideo.playCount = nnddVideo.playCount + 1;
2128     libraryManager.update(nnddVideo, isSave);
2129     trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2130     }else{
2131     //���������������
2132     trace("������������������������������������:" + videoId);
2133     }
2134     }
2135    
2136     /**
2137     * ���������������������������������������������
2138     * swf���������������SWF���������������������������������������������������
2139     *
2140     * @param event
2141     *
2142     */
2143     private function commentTimerHandler(event:TimerEvent):void{
2144    
2145     if(isPlayerClosing){
2146     if(commentTimer != null){
2147     commentTimer.stop();
2148     commentTimer.reset();
2149     }
2150     return;
2151     }
2152    
2153 mineap 512 // ���������������
2154 mineap 370 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2155    
2156     var nowSec:String="00",nowMin:String="0";
2157     nowSec = String(int(commentTimerVpos/1000%60));
2158     nowMin = String(int(commentTimerVpos/1000/60));
2159     if(nowSec.length == 1){
2160     nowSec = "0" + nowSec;
2161     }
2162     var nowTime:String = nowMin + ":" + nowSec;
2163    
2164     var allSec:String="00",allMin:String="0"
2165     if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2166     allSec = String(int(mc.totalFrames/swfFrameRate%60));
2167     allMin = String(int(mc.totalFrames/swfFrameRate/60));
2168     }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2169 mineap 381 allSec = String(int(videoDisplay.duration%60));
2170     allMin = String(int(videoDisplay.duration/60));
2171 mineap 370 }
2172     if(allSec.length == 1){
2173     allSec = "0" + allSec;
2174     }
2175     var allTime:String = allMin +":" + allSec;
2176    
2177     if(!isCounted && commentTimerVpos > 10000){
2178     //���������������������
2179     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2180     if(videoId != null){
2181     addVideoPlayCount(videoId, false);
2182     }
2183     isCounted = true;
2184     }
2185    
2186     //SWF���������������������������������������������������������������������
2187     if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2188    
2189     videoPlayer.videoController_under.slider_timeline.enabled = true;
2190     videoPlayer.videoController_under.slider_timeline.minimum = 0;
2191     videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2192    
2193     videoPlayer.videoController.slider_timeline.enabled = true;
2194     videoPlayer.videoController.slider_timeline.minimum = 0;
2195     videoPlayer.videoController.slider_timeline.maximum = mc.totalFrames;
2196    
2197     if(!this.sliderChanging){
2198     videoPlayer.videoController_under.slider_timeline.value = mc.currentFrame;
2199     videoPlayer.videoController.slider_timeline.value = mc.currentFrame;
2200     }
2201    
2202     // trace(nowMin + "/" + nowSec);
2203    
2204     videoPlayer.videoController_under.label_time.text = nowTime + "/"+ allTime;
2205     videoPlayer.videoController.label_time.text = nowTime + "/"+ allTime;
2206    
2207     if(mc.currentFrame >= mc.totalFrames-1 || mc.currentFrame == this.lastFrame ){
2208     this.lastFrame = mc.currentFrame;
2209     //���������movieClip������������������������������������������������������
2210     if(!isMovieClipStopping){
2211     isMovieClipStopping = true;
2212     movieClipCompleteHandler();
2213     }
2214     return;
2215     }else{
2216     if(!isMovieClipStopping){
2217     this.lastFrame = mc.currentFrame;
2218     }
2219     }
2220     }
2221    
2222     var tempTime:Number = (new Date).time;
2223    
2224     //SWF������������������������������������������������������������������
2225     if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2226     this.commentTimerVpos += (tempTime - this.time);
2227     }
2228    
2229     //���������������������
2230     var commentArray:Vector.<NNDDComment> = this.commentManager.setComment(commentTimerVpos, (tempTime - this.time)*3, this.videoPlayer.isShowComment);
2231     this.commentManager.moveComment(tempTime/1000 - this.time/1000, videoInfoView.showCommentSec);
2232     this.commentManager.removeComment(commentTimerVpos, videoInfoView.showCommentSec * 1000);
2233     this.time = tempTime;
2234    
2235     //������������������������������������������������������