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