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