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