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