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