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