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 1004 - (hide annotations) (download)
Sat Nov 1 09:25:23 2014 UTC (9 years, 5 months ago) by mineap
File size: 173115 byte(s)
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 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 mineap 985 // 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 mineap 370
975 mineap 985 renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_STATUS_UPDATE, function(event:Event):void{
976     trace(event);
977     logManager.addLog(RenewDownloadManager.PROCCESS_STATUS_UPDATE + ":" + event);
978     });
979 mineap 370 renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_FAIL, function(event:Event):void{
980     renewDownloadManager = null;
981     videoPlayer.label_downloadStatus.text = Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD;
982     logManager.addLog(Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD);
983    
984     var timer:Timer = new Timer(1000, 1);
985     timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
986     myListGroupUpdate(PathMaker.getVideoID(_videoID));
987 mineap 512 initStart(videoPath, thumbInfoPath, autoPlay);
988 mineap 370 });
989     timer.start();
990     });
991     renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{
992     renewDownloadManager = null;
993     videoPlayer.label_downloadStatus.text = Message.PLAY_EACH_COMMENT_DOWNLOAD_CANCEL;
994     logManager.addLog(Message.PLAY_EACH_COMMENT_DOWNLOAD_CANCEL);
995    
996     var timer:Timer = new Timer(1000, 1);
997     timer.addEventListener(TimerEvent.TIMER_COMPLETE, function():void{
998     myListGroupUpdate(PathMaker.getVideoID(_videoID));
999 mineap 512 initStart(videoPath, thumbInfoPath, autoPlay);
1000 mineap 370 });
1001     timer.start();
1002     });
1003    
1004     if(this.videoInfoView.isRenewOtherCommentWithCommentEachPlay){
1005 mineap 565 renewDownloadManager.renewForOtherVideo(UserManager.instance.user,
1006     UserManager.instance.password, PathMaker.getVideoID(videoId), videoName,
1007 mineap 370 new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)),
1008 mineap 662 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount(),
1009     FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
1010 mineap 370 }else{
1011 mineap 565 renewDownloadManager.renewForCommentOnly(UserManager.instance.user,
1012     UserManager.instance.password, PathMaker.getVideoID(videoId), videoName,
1013 mineap 370 new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)),
1014 mineap 662 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount(),
1015     FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
1016 mineap 370 }
1017     }
1018    
1019     /**
1020     * ���������������������������������
1021     * @param date
1022     *
1023     */
1024     public function getOldCommentFromNico(date:Date):void{
1025    
1026     if(renewDownloadManagerForOldComment != null){
1027     // ���������������������������
1028     renewDownloadManagerForOldComment.close();
1029     renewDownloadManagerForOldComment = null;
1030     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
1031     logManager.addLog("���������������������������������");
1032    
1033     }else{
1034     // ������������
1035    
1036     videoInfoView.button_oldComment_reloadFromNico.label = "���������������";
1037     logManager.addLog("������������������������������:" + DateUtil.getDateString(date));
1038    
1039     renewDownloadManagerForOldComment = new RenewDownloadManager(null, LogManager.instance);
1040     renewDownloadManagerForOldComment.addEventListener(NNDDDownloader.GETWAYBACKKEY_API_ACCESS_FAIL, function(event:Event):void{
1041     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
1042     logManager.addLog("������������������������������:" + event);
1043    
1044 mineap 381 FlexGlobals.topLevelApplication.activate();
1045 mineap 945 Alert.show("���������������������������������������������\n���������������������������������������������������������������������������������������������\n(���������������������������������������������������������������������������)", Message.M_ERROR, 4, this.videoPlayer);
1046 mineap 370 });
1047     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{
1048     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
1049     logManager.addLog("���������������������������������������:" + event);
1050    
1051     renewDownloadManagerForOldComment = null;
1052     });
1053     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_COMPLETE, function(event:Event):void{
1054     logManager.addLog("������������������������������:" + event);
1055     //������������������������������
1056     reloadLocalComment(date);
1057    
1058     renewDownloadManagerForOldComment.close();
1059     renewDownloadManagerForOldComment = null;
1060    
1061     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
1062    
1063     });
1064     renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_FAIL, function(event:Event):void{
1065     videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
1066     logManager.addLog("������������������������������:" + event);
1067    
1068     renewDownloadManagerForOldComment = null;
1069    
1070 mineap 381 FlexGlobals.topLevelApplication.activate();
1071 mineap 945 Alert.show("���������������������������������������������", Message.M_ERROR, 4, this.videoPlayer);
1072 mineap 370 });
1073    
1074     var videoId:String = PathMaker.getVideoID(this._videoID);
1075     var videoName:String = null;
1076     var videoPath:File = null;
1077     if(isStreamingPlay){
1078     videoName = "nndd.flv";
1079     videoPath = LibraryManagerBuilder.instance.libraryManager.tempDir;
1080     }else{
1081     videoName = PathMaker.getVideoName(this.source);
1082     videoPath = new File(this.source.substring(0, this.source.lastIndexOf("/")+1))
1083     }
1084    
1085     // maxCount���������������������������������������������������������������������������������������������
1086 mineap 381 var maxCount:Number = (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount();
1087 mineap 370 if(maxCount < 10000){
1088     maxCount = 10000;
1089     }
1090    
1091     // ���������������������������������������������������������������������
1092 mineap 565 renewDownloadManagerForOldComment.renewForCommentOnly(UserManager.instance.user,
1093     UserManager.instance.password, videoId, videoName, videoPath, true,
1094 mineap 662 date, maxCount, FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
1095 mineap 370
1096     }
1097    
1098     }
1099    
1100     /**
1101     *
1102     * @param event
1103     *
1104     */
1105 mineap 418 protected function byteloadedChangedEventHandler(event:Event):void{
1106 mineap 370 trace(event.type);
1107     if(videoInfoView.isResizePlayerEachPlay){
1108     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1109     }else{
1110     resizePlayerJustVideoSize();
1111     }
1112     }
1113    
1114     /**
1115     *
1116 mineap 418 * @param event
1117     *
1118     */
1119     protected function osmfCurrentTimeChangeEventHandler(event:TimeEvent):void{
1120 mineap 1004 // trace(event.type + ", time:" + event.time);
1121     // if(event.time < 0){
1122     // return;
1123     // }
1124     // if(videoInfoView.isResizePlayerEachPlay){
1125     // resizePlayerJustVideoSize(videoPlayer.nowRatio);
1126     // }else{
1127     // resizePlayerJustVideoSize();
1128     // }
1129 mineap 418 }
1130    
1131     /**
1132     *
1133 mineap 370 * @param videoId
1134     * @return
1135     *
1136     */
1137     public function myListGroupUpdate(videoId:String):void{
1138    
1139     myListLoader = new MyListLoader();
1140     myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_SUCCESS, function(event:Event):void{
1141     var myLists:Array = myListLoader.getMyLists();
1142    
1143     if(myLists.length > 0){
1144     var myListNames:Array = new Array();
1145     var myListIds:Array = new Array();
1146    
1147     for each(var array:Array in myLists){
1148     myListNames.push(array[0]);
1149     myListIds.push(array[1]);
1150     }
1151    
1152     videoInfoView.setMyLists(myListNames, myListIds);
1153     }
1154     myListLoader.close();
1155     });
1156     myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_FAILURE, function(event:ErrorEvent):void{
1157     myListLoader.close();
1158     logManager.addLog("���������������������������������������:" + event + ":" + event.text);
1159     });
1160     myListLoader.getMyListGroup(videoId);
1161    
1162     }
1163    
1164    
1165     /**
1166     *
1167     * @param event
1168     *
1169     */
1170 mineap 403 private function mediaPlayerStateChanged(event:MediaPlayerStateChangeEvent):void
1171     {
1172 mineap 370 if(videoDisplay != null && !isPlayerClosing){
1173 mineap 403 if(event.state != MediaPlayerState.BUFFERING){
1174 mineap 370 videoPlayer.label_downloadStatus.text = "";
1175 mineap 403 videoDisplay.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1176 mineap 370 if(commentTimer != null && !commentTimer.running){
1177     time = (new Date).time;
1178     commentTimer.start();
1179     }
1180     }
1181     }else{
1182     (event.currentTarget as VideoDisplay).stop();
1183 mineap 403 (event.currentTarget as VideoDisplay).removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1184 mineap 370 destructor();
1185     }
1186     }
1187    
1188     /**
1189     *
1190     * @param event
1191     *
1192     */
1193     private function convertCompleteHandler(event:Event):void{
1194    
1195     isSwfConverting = false;
1196    
1197     if(loader != null && !isPlayerClosing){
1198    
1199     mc = LoaderInfo(event.currentTarget).loader.content as MovieClip;
1200     swfFrameRate = LoaderInfo(event.currentTarget).loader.contentLoaderInfo.frameRate;
1201     setVolume(videoPlayer.videoController.slider_volume.value);
1202    
1203     if(videoInfoView.isResizePlayerEachPlay){
1204     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1205     }else{
1206     resizePlayerJustVideoSize();
1207     }
1208    
1209     videoPlayer.label_downloadStatus.text = "";
1210    
1211     commentTimer.start();
1212     time = (new Date).time;
1213    
1214     }else{
1215    
1216     if(mc != null){
1217     mc.stop();
1218     }
1219     destructor();
1220     if(event.currentTarget as LoaderInfo){
1221     LoaderInfo(event.currentTarget).loader.unloadAndStop(true);
1222     }
1223    
1224     }
1225    
1226     LoaderInfo(event.currentTarget).loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1227    
1228     }
1229    
1230     /**
1231     * ���������������������������������������������������������������������
1232     *
1233     * @param videoPath
1234     * @param windowType
1235     * @param comments
1236     * @param ngList
1237     * @param playList ���������������������m3u���������
1238     * @param videoNameList ���������������������������������URL���������������������������������������������������������������������������������
1239     * @param playingIndex ������������������������������
1240     * @param autoPlay ������������
1241     * @param isStreamingPlay ���������������������������������������
1242     * @param downLoadedURL ���������������������URL
1243     * @return
1244     *
1245     */
1246     private function initWithPlayList(videoPath:String, windowType:int, comments:Comments, playList:Array, videoNameList:Array, playListName:String, playingIndex:int,
1247     autoPlay:Boolean = false, isStreamingPlay:Boolean = false, downLoadedURL:String = null, videoTitle:String = null):void{
1248    
1249     // this.streamingRetryCount = 0;
1250    
1251     this.playingIndex = playingIndex;
1252     this.isPlayListingPlay = true;
1253     var videoNameArray:Array = videoNameList;
1254     if(videoNameArray == null){
1255     videoNameArray = new Array();
1256     for(var i:int; i<playList.length; i++){
1257     var url:String = playList[i];
1258     videoNameArray.push(url.substring(url.lastIndexOf("/") + 1));
1259     }
1260     }
1261    
1262     if(downLoadedURL == null){
1263     downLoadedURL = videoPath;
1264     }
1265    
1266     this.videoInfoView.resetPlayList();
1267     this.videoInfoView.setPlayList(playList, videoNameArray, playListName);
1268    
1269     trace("\t"+playList);
1270    
1271     this.init(videoPath, windowType, comments, PathMaker.createThmbInfoPathByVideoPath(downLoadedURL), autoPlay, isStreamingPlay, videoTitle, true, LibraryUtil.getVideoKey(videoTitle));
1272     }
1273    
1274     /**
1275     * VideoPlayer������������������������������������������������������������������������������
1276     *
1277     * @param url
1278     * @param index
1279     * @return
1280     *
1281     */
1282     public function initForVideoPlayer(url:String, index:int):void{
1283     playMovie(url, this.videoInfoView.playList, index, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(index)));
1284     }
1285    
1286     /**
1287 mineap 487 *
1288     * @param isSmoothing
1289     *
1290     */
1291     public function setVideoSmoothing(isSmoothing:Boolean):void{
1292    
1293 mineap 529 if (videoDisplay != null && videoDisplay.videoObject != null)
1294     {
1295    
1296     if (isSmoothing)
1297     {
1298     // ������������������������
1299    
1300     if (videoDisplay.videoObject.videoWidth == videoDisplay.videoObject.width)
1301     {
1302     // ���������������������������������������������������
1303     if (videoInfoView.isSmoothingOnlyNotPixelIdenticalDimensions)
1304     {
1305     // ���������������������������������������������������������
1306     videoDisplay.videoObject.smoothing = false;
1307     }
1308     else
1309     {
1310     // ������������������������������������������������������
1311     videoDisplay.videoObject.smoothing = true;
1312     }
1313     }
1314     else
1315     {
1316     // ���������������������������������������������������������
1317     videoDisplay.videoObject.smoothing = true;
1318     }
1319    
1320     }
1321     else
1322     {
1323     // ���������������������������
1324     videoDisplay.videoObject.smoothing = false;
1325     }
1326    
1327 mineap 487 }
1328    
1329     }
1330    
1331     /**
1332 mineap 498 *
1333     * @param value 0-3 default=2
1334     *
1335     */
1336     public function setPlayerQuality(value:int):void{
1337     if(videoPlayer.stage != null){
1338    
1339     var qualityStr:String = StageQuality.HIGH;
1340     switch(value){
1341     case 0:
1342     qualityStr = StageQuality.LOW;
1343     break;
1344     case 1:
1345     qualityStr = StageQuality.MEDIUM;
1346     break;
1347     case 2:
1348     qualityStr = StageQuality.HIGH;
1349     break;
1350     case 3:
1351     qualityStr = StageQuality.BEST;
1352     break;
1353     default:
1354     qualityStr = StageQuality.HIGH;
1355     }
1356    
1357     videoPlayer.stage.quality = qualityStr;
1358     }
1359     }
1360    
1361     /**
1362 mineap 799 *
1363     * @param bool
1364     *
1365     */
1366     public function isUseOldVersionVideoSize(bool:Boolean):void
1367     {
1368     this._useOldVersionVideoSize = bool;
1369     }
1370    
1371    
1372     /**
1373 mineap 370 * videoDisplay���������������������������������������������������������������������������������������������
1374     * ���������������������������������������������������������������
1375     */
1376     public function resizePlayerJustVideoSize(windowSizeRatio:Number = -1):void{
1377    
1378     try{
1379     var ratio:Number = 1;
1380     if(windowSizeRatio != -1){
1381     ratio = windowSizeRatio;
1382     }
1383    
1384     //������������������������������
1385 mineap 799 var videoWindowHeight:int;
1386     var videoWindowWidth:int;
1387    
1388     if (_useOldVersionVideoSize)
1389     {
1390     videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1391     videoWindowWidth = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1392     }else
1393     {
1394     videoWindowHeight = PlayerController.NICO_VIDEO_NEW_WINDOW_HEIGHT * ratio;
1395     videoWindowWidth = PlayerController.NICO_VIDEO_NEW_WINDOW_WIDTH_WIDE_MODE * ratio;
1396     }
1397 mineap 370
1398     //���������������������������������
1399     var nicowariWindowHeight:int = PlayerController.NICO_WARI_HEIGHT * ratio;
1400     var nicowariWindowWidth:int = PlayerController.NICO_WARI_WIDTH * ratio;
1401    
1402     //InfoView���������������������������������������
1403     if(isPlayListingPlay){
1404     if(this.videoInfoView != null){
1405     videoInfoView.showPlayingTitle(playingIndex);
1406     }
1407     }
1408    
1409     //���������������������������������������
1410     if(this.videoPlayer.stage != null && this.videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
1411     //������������������������������������������ ������������������������������������������������������������
1412     if(this.videoInfoView.isResizePlayerEachPlay || windowSizeRatio != -1){
1413    
1414 mineap 381 if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1415 mineap 370 //FLV������������
1416    
1417 mineap 487 // ���������������������������
1418 mineap 529 this.setVideoSmoothing(videoInfoView.isSmoothing);
1419 mineap 487
1420 mineap 381 if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_NICO && this.videoDisplay.videoObject.videoHeight > 0){
1421 mineap 370
1422     //��������������������������������������������������������������� && ��������������������������������������������������� (���������������������������������������������������������������������������������)
1423     var isWideVideo:Boolean = false;
1424 mineap 381 if(WIDE_MODE_ASPECT_RATIO < Number(this.videoDisplay.videoObject.videoWidth)/Number(this.videoDisplay.videoObject.videoHeight)){
1425 mineap 370 // ���������������16:9���
1426     isWideVideo = true;
1427     trace("enable 16:9 mode");
1428     }
1429    
1430 mineap 799
1431     if (_useOldVersionVideoSize)
1432     {
1433     videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1434     if(this.videoInfoView.isEnableWideMode && isWideVideo){
1435     videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH_WIDE_MODE + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1436     }else{
1437     videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1438     }
1439 mineap 370 }
1440 mineap 799 else
1441     {
1442     videoWindowHeight = PlayerController.NICO_VIDEO_NEW_WINDOW_HEIGHT * ratio;
1443     if(this.videoInfoView.isEnableWideMode && isWideVideo){
1444     videoWindowWidth = (PlayerController.NICO_VIDEO_NEW_WINDOW_WIDTH_WIDE_MODE + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1445     }else{
1446     videoWindowWidth = (PlayerController.NICO_VIDEO_NEW_WINDOW_WIDTH + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1447     }
1448     }
1449 mineap 370
1450 mineap 529 //������������������������������������������
1451 mineap 807 this.videoDisplay.setConstraintValue("bottom", 0);
1452     this.videoDisplay.setConstraintValue("left", NICO_VIDEO_PADDING);
1453     this.videoDisplay.setConstraintValue("right", NICO_VIDEO_PADDING);
1454     this.videoDisplay.setConstraintValue("top", 0);
1455 mineap 529
1456     trace(videoDisplay.width + "," + videoDisplay.height);
1457    
1458 mineap 681 logManager.addLog("���������������������������������:" + this.videoDisplay.videoObject.videoWidth + " x " + this.videoDisplay.videoObject.videoHeight);
1459    
1460 mineap 418 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1461 mineap 370 //init������������������������������������������������������������������������������������������������������������������
1462 mineap 418 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1463 mineap 370 // resizePlayerJustVideoSize(windowSizeRatio);
1464     }
1465 mineap 418 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1466     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1467     }
1468 mineap 370
1469 mineap 381 }else if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_VIDEO && this.videoDisplay.videoObject.videoHeight > 0){
1470 mineap 370
1471     //���������������������������������������������������������������������(videoHeight���0���������������������������������������������������������������������)
1472    
1473 mineap 807 videoWindowHeight = (this.videoDisplay.videoObject.videoHeight * ratio) + PlayerController.NICO_VIDEO_PADDING*2;
1474     videoWindowWidth = (this.videoDisplay.videoObject.videoWidth * ratio) + PlayerController.NICO_VIDEO_PADDING*2;
1475 mineap 370
1476 mineap 807 this.videoDisplay.setConstraintValue("bottom", NICO_VIDEO_PADDING);
1477     this.videoDisplay.setConstraintValue("left", NICO_VIDEO_PADDING);
1478     this.videoDisplay.setConstraintValue("right", NICO_VIDEO_PADDING);
1479     this.videoDisplay.setConstraintValue("top", NICO_VIDEO_PADDING);
1480 mineap 370
1481 mineap 418 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1482 mineap 370 //init������������������������������������������������������������������������������������������������������������������
1483 mineap 418 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1484 mineap 370 // resizePlayerJustVideoSize(windowSizeRatio);
1485     }
1486 mineap 418 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1487     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1488     }
1489 mineap 370 }else{
1490     //������������������������������������������������
1491     return;
1492     }
1493    
1494     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1495     //SWF������������
1496    
1497     //SWF���������������������������������������
1498 mineap 799 if (_useOldVersionVideoSize)
1499     {
1500     videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1501     videoWindowWidth = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1502     }
1503     else
1504     {
1505     videoWindowHeight = PlayerController.NICO_VIDEO_NEW_WINDOW_HEIGHT * ratio;
1506     videoWindowWidth = PlayerController.NICO_VIDEO_NEW_WINDOW_WIDTH * ratio;
1507     }
1508 mineap 370
1509     }
1510    
1511     if(videoPlayer.canvas_nicowari.height < 1 ){
1512     //������������������������������������������������������������������������������������
1513 mineap 807 videoWindowHeight += (NICO_WARI_HEIGHT + NICO_VIDEO_PADDING);
1514     }else
1515     {
1516     videoWindowHeight += NICO_VIDEO_PADDING;
1517 mineap 370 }
1518    
1519     this.videoPlayer.nativeWindow.height += int(videoWindowHeight - this.videoPlayer.canvas_video_back.height);
1520     this.videoPlayer.nativeWindow.width += int(videoWindowWidth - this.videoPlayer.canvas_video_back.width);
1521    
1522 mineap 681 if (this.videoDisplay != null)
1523     {
1524     logManager.addLog("���������������������������:" + this.videoDisplay.width + " x " + this.videoDisplay.height);
1525     }
1526    
1527 mineap 544 // (this.videoPlayer as Window).validateDisplayList();
1528     // (this.videoPlayer as Window).validateNow();
1529 mineap 370
1530     //������������������������������������������������������������������������������������������������������������������
1531     // var diffH:int = this.videoPlayer.nativeWindow.height - this.videoPlayer.stage.stageHeight;
1532     // var diffW:int = this.videoPlayer.nativeWindow.width - this.videoPlayer.stage.stageWidth;
1533    
1534     }
1535 mineap 525 else
1536     {
1537     // ������������������������������������������
1538     if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1539     //FLV������������
1540    
1541     // ���������������������������
1542 mineap 529 this.setVideoSmoothing(videoInfoView.isSmoothing);
1543 mineap 525
1544     if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1545     //init������������������������������������������������������������������������������������������������������������������
1546     videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1547     }
1548     if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1549     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1550     }
1551    
1552     }
1553    
1554     }
1555 mineap 370
1556     }
1557 mineap 569 else
1558     {
1559     if (PlayerController.WINDOW_TYPE_FLV == this.windowType)
1560     {
1561     if (videoInfoView != null)
1562     {
1563     this.setVideoSmoothing(videoInfoView.isSmoothing);
1564     }
1565     }
1566     }
1567 mineap 807
1568     updateVideoStatus();
1569 mineap 370
1570     }catch(error:Error){ //������������������������������������������������������������������������������������������
1571     trace(error.getStackTrace());
1572     logManager.addLog("������������������������������������������:" + error + ", " + error.getStackTrace());
1573     stop();
1574     destructor();
1575     }
1576     }
1577    
1578    
1579     /**
1580     * ������������������������������������������������������������������
1581     * ���������������������������������������������������������������������������������������������
1582     * @return
1583     *
1584     */
1585     public function play():void
1586     {
1587     try{
1588     videoPlayer.canvas_video_back.setFocus();
1589    
1590     var newComments:Comments = null;
1591     videoPlayer.canvas_video.toolTip = null;
1592     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1593     if(videoDisplay != null && videoDisplay.playing){
1594     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1595     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1596     this.commentTimer.stop();
1597     this.commentTimer.reset();
1598     videoDisplay.pause();
1599     pausing = true;
1600     }else{
1601     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1602     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1603     if(pausing){
1604     this.videoPlayer.videoController.slider_timeline.enabled = true;
1605     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1606     this.videoDisplay.play();
1607     this.time = (new Date).time;
1608     this.commentTimer.start();
1609     }else{
1610     this.videoPlayer.videoController.slider_timeline.enabled = true;
1611     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1612 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1613 mineap 370 }
1614     pausing = false;
1615     }
1616     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1617     if(isMovieClipPlaying){
1618     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1619     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1620     this.commentTimer.stop();
1621     this.commentTimer.reset();
1622     mc.stop();
1623     isMovieClipPlaying = false;
1624     pausing = true;
1625     }else{
1626     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1627     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1628     if(pausing){
1629     this.videoPlayer.videoController.slider_timeline.enabled = true;
1630     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1631     mc.play();
1632     isMovieClipPlaying = true;
1633     this.time = (new Date).time;
1634     this.commentTimer.start();
1635     }else{
1636     this.videoPlayer.canvas_video.removeAllChildren();
1637     this.videoPlayer.videoController.slider_timeline.enabled = true;
1638     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1639 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1640    
1641 mineap 370 }
1642     pausing = false;
1643     }
1644     }else{
1645     if(this.videoPlayer != null && this.videoPlayer.title != null){
1646     this.playMovie(this.videoPlayer.title);
1647     }
1648     }
1649    
1650     }catch(error:Error){
1651     trace(error.getStackTrace());
1652     logManager.addLog("���������������������������:" + error + ":" + error.getStackTrace());
1653     }
1654    
1655     }
1656    
1657    
1658     /**
1659     * ������������������������������������������������
1660     * @return
1661     *
1662     */
1663     public function stop():void
1664     {
1665     try{
1666    
1667     pausing = false;
1668    
1669     if(videoInfoView.isShowAlwaysNicowariArea){
1670     videoPlayer.showNicowariArea();
1671     }else{
1672     videoPlayer.hideNicowariArea();
1673     }
1674    
1675     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1676     videoPlayer.canvas_video_back.setFocus();
1677     videoPlayer.label_downloadStatus.text = "";
1678     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1679     }
1680    
1681     if(this.movieEndTimer != null){
1682     this.movieEndTimer.stop();
1683     this.movieEndTimer = null;
1684     }
1685    
1686     if(renewDownloadManager != null){
1687     try{
1688     renewDownloadManager.close();
1689     renewDownloadManager = null;
1690     logManager.addLog("���������������������������������������������������������");
1691     }catch(error:Error){
1692     trace(error);
1693     }
1694     }else{
1695    
1696     this.videoPlayer.videoController.button_play.enabled = true;
1697     this.videoPlayer.videoController_under.button_play.enabled = true;
1698     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1699     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1700    
1701     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1702     this.videoPlayer.videoController.slider_timeline.value = 0;
1703    
1704     this.commentTimerVpos = 0;
1705     this.commentTimer.stop();
1706     this.commentTimer.reset();
1707     this.commentManager.removeAll();
1708    
1709     //���������������������������������������������
1710     this.destructor();
1711    
1712     //������������������������������������������������������
1713     videoPlayer.canvas_nicowari.removeAllChildren();
1714     if(nicowariMC != null){
1715     this.pauseByNicowari(true);
1716     }
1717    
1718     }
1719    
1720     }catch(error:Error){
1721     trace(error.getStackTrace());
1722     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1723     }
1724    
1725     }
1726    
1727    
1728     /**
1729 mineap 427 * ���������������������������������������������������������������������������������
1730     *
1731     */
1732     public function goToTop():void
1733     {
1734     try{
1735    
1736     pausing = false;
1737    
1738     if(videoInfoView.isShowAlwaysNicowariArea){
1739     videoPlayer.showNicowariArea();
1740     }else{
1741     videoPlayer.hideNicowariArea();
1742     }
1743    
1744     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1745     videoPlayer.canvas_video_back.setFocus();
1746     videoPlayer.label_downloadStatus.text = "";
1747     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1748     }
1749    
1750     if(this.movieEndTimer != null){
1751     this.movieEndTimer.stop();
1752     this.movieEndTimer = null;
1753     }
1754    
1755     if(renewDownloadManager != null){
1756     try{
1757     renewDownloadManager.close();
1758     renewDownloadManager = null;
1759     logManager.addLog("���������������������������������������������������������");
1760     }catch(error:Error){
1761     trace(error);
1762     }
1763     }else{
1764    
1765     this.videoPlayer.videoController.button_play.enabled = true;
1766     this.videoPlayer.videoController_under.button_play.enabled = true;
1767     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1768     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1769    
1770     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1771     this.videoPlayer.videoController.slider_timeline.value = 0;
1772    
1773     this.commentTimerVpos = 0;
1774     this.commentTimer.stop();
1775     this.commentTimer.reset();
1776    
1777     var playing:Boolean = false;
1778     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1779     if(videoDisplay != null && videoDisplay.playing){
1780     playing = true;
1781     }
1782     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1783     if(isMovieClipPlaying){
1784     playing = true;
1785     }
1786     }
1787    
1788     if(playing){
1789     this.play();
1790     }
1791     this.seek(0);
1792    
1793    
1794     //������������������������������������������������������
1795     videoPlayer.canvas_nicowari.removeAllChildren();
1796     if(nicowariMC != null){
1797     this.pauseByNicowari(true);
1798     }
1799    
1800     }
1801    
1802     }catch(error:Error){
1803     trace(error.getStackTrace());
1804     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1805     }
1806     }
1807    
1808     /**
1809 mineap 370 * VideoDisplay���������������������������������������������������������
1810     * @param videoDisplay
1811     *
1812     */
1813     private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1814 mineap 381 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1815     videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1816     videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1817 mineap 370 }
1818    
1819     /**
1820     * VideoDisplay���������������������������������������������������������
1821     * @param videoDisplay
1822     *
1823     */
1824     private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1825 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1826     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1827 mineap 370 }
1828 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){
1829     videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1830 mineap 370 }
1831     if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){
1832 mineap 381 videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1833 mineap 370 }
1834     }
1835    
1836     /**
1837     *
1838 mineap 381 * @param event
1839     *
1840     */
1841     private function durationChangeEventHandler(event:TimeEvent):void{
1842 mineap 1004 // if(videoInfoView.isResizePlayerEachPlay){
1843     // resizePlayerJustVideoSize(videoPlayer.nowRatio);
1844     // }else{
1845     // resizePlayerJustVideoSize();
1846     // }
1847 mineap 381 }
1848    
1849     /**
1850     *
1851 mineap 370 * @param loader
1852     *
1853     */
1854     // private function removeMovieClipEventHandlers(loader:Loader):void{
1855     // if(loader.hasEventListener(Event.COMPLETE)){
1856     // loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1857     // }
1858     // }
1859    
1860     /**
1861     * ������������������������������������������������������������������������������
1862     * @return
1863     *
1864     */
1865     public function getStreamingProgress():int{
1866     var value:int = 0;
1867     if(isStreamingPlay){
1868     if(videoDisplay != null){
1869     value = (videoDisplay.bytesLoaded*100 / videoDisplay.bytesTotal);
1870     }else if(loader != null && loader.contentLoaderInfo != null){
1871     value = (loader.contentLoaderInfo.bytesLoaded*100 / loader.contentLoaderInfo.bytesTotal);
1872     }else{
1873     value = 100;
1874     }
1875     }else{
1876     value = 100;
1877     }
1878     return value;
1879     }
1880    
1881 mineap 531
1882 mineap 370 /**
1883 mineap 531 * ���������������������������������������������������MB/s������������������
1884     * @return
1885 mineap 370 *
1886 mineap 531 */
1887     public function getStreamingSpeed():Number
1888     {
1889    
1890     // timer������1000ms���������������������
1891    
1892     var value:Number = 0;
1893     if (isStreamingPlay)
1894     {
1895     if(videoDisplay != null){
1896     value = videoDisplay.bytesLoaded - this.lastLoadedBytes;
1897     this.lastLoadedBytes = videoDisplay.bytesLoaded;
1898     }else if(loader != null && loader.contentLoaderInfo != null){
1899     value = loader.contentLoaderInfo.bytesLoaded - this.lastLoadedBytes;
1900     this.lastLoadedBytes = loader.contentLoaderInfo.bytesLoaded;
1901     }else{
1902     return value;
1903     }
1904    
1905     trace(value);
1906    
1907     //MB���������
1908 mineap 889 value = value / 1048576;
1909 mineap 531
1910     // MB/s���������
1911     value = value / 1;
1912     }
1913     else
1914     {
1915     // ���������������
1916     }
1917    
1918     return value;
1919    
1920     }
1921    
1922     /**
1923     *
1924 mineap 370 * @return
1925     *
1926     */
1927     public function get bytesLoaded():Number{
1928    
1929     var value:Number = 0.0;
1930    
1931     if(videoDisplay != null){
1932     value = videoDisplay.bytesLoaded;
1933     }else if(loader != null && loader.contentLoaderInfo != null){
1934     value = loader.contentLoaderInfo.bytesLoaded;
1935     }
1936    
1937     return value;
1938     }
1939    
1940     /**
1941     *
1942     * @param event
1943     *
1944     */
1945     private function streamingProgressHandler(event:TimerEvent):void{
1946     if(isStreamingPlay){
1947     var value:int = getStreamingProgress();
1948 mineap 531 var speed:Number = getStreamingSpeed();
1949 mineap 370 if(value >= 100){
1950     this.videoPlayer.label_playSourceStatus.text = "Streaming:100%";
1951     videoPlayer.videoController.resetStatusAlpha();
1952     if(streamingProgressTimer != null){
1953     streamingProgressTimer.stop();
1954     }
1955    
1956     // 100%���������������������������������������������������������������������������������������
1957     if(this.bytesLoaded <= 64){
1958 mineap 580
1959     var maxCount:int = 1;
1960     var confValue:String = ConfigManager.getInstance().getItem("streamingRetryMaxCount");
1961     if(confValue == null)
1962     {
1963     ConfigManager.getInstance().removeItem("streamingRetryMaxCount");
1964     ConfigManager.getInstance().setItem("streamingRetryMaxCount", maxCount);
1965     }
1966     else
1967     {
1968     maxCount = int(confValue);
1969     }
1970    
1971     if(this.streamingRetryCount <= maxCount ){
1972 mineap 370 // ���������������
1973     this.streamingRetryCount++;
1974 mineap 573 var timeStr:String = String(int(10000*this.streamingRetryCount / 1000));
1975 mineap 370 stop();
1976     logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1977 mineap 573 videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + timeStr + "���������" + this.streamingRetryCount +"������ )";
1978 mineap 370
1979     if(nicoVideoAccessRetryTimer != null){
1980     nicoVideoAccessRetryTimer.stop();
1981     nicoVideoAccessRetryTimer = null;
1982     }
1983 mineap 573 nicoVideoAccessRetryTimer = new Timer(10000*this.streamingRetryCount, 1);
1984 mineap 370 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1985     (event.currentTarget as Timer).stop();
1986     play();
1987     });
1988     nicoVideoAccessRetryTimer.start();
1989    
1990     }else{
1991     stop();
1992     logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1993     videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1994     }
1995     }else{
1996     // ������������������
1997     this.streamingRetryCount = 0;
1998     }
1999    
2000     }else{
2001    
2002 mineap 531 var formatter:NumberFormatter = new NumberFormatter();
2003     formatter.precision = 2;
2004     var str:String = formatter.format(speed) + "MB/s"
2005 mineap 370
2006 mineap 531 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
2007 mineap 370 }
2008     }else{
2009     if(streamingProgressTimer != null){
2010     streamingProgressTimer.stop();
2011     }
2012     }
2013     }
2014    
2015     /**
2016     * ������������������������������������������������������
2017     * @param evt
2018     *
2019     */
2020 mineap 381 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
2021 mineap 370 try{
2022     var allSec:String="00",allMin:String="0";
2023     var nowSec:String="00",nowMin:String="0";
2024    
2025 mineap 381 this.commentTimerVpos = event.time*1000;
2026 mineap 370
2027 mineap 381 nowSec = String(int(this.videoDisplay.currentTime%60));
2028     nowMin = String(int(this.videoDisplay.currentTime/60));
2029 mineap 370
2030 mineap 381 allSec = String(int(this.videoDisplay.duration%60));
2031     allMin = String(int(this.videoDisplay.duration/60));
2032 mineap 370
2033     if(nowSec.length == 1){
2034     nowSec = "0" + nowSec;
2035     }
2036     if(allSec.length == 1){
2037     allSec = "0" + allSec;
2038     }
2039    
2040     videoPlayer.videoController_under.slider_timeline.enabled = true;
2041     videoPlayer.videoController_under.slider_timeline.minimum = 0;
2042 mineap 381 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
2043 mineap 370 if(!this.sliderChanging){
2044    
2045 mineap 381 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
2046     this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
2047     videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
2048 mineap 370
2049     }
2050     videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
2051     videoPlayer.videoController_under.slider_timeline.enabled = true;
2052    
2053     videoPlayer.videoController.slider_timeline.enabled = true;
2054     videoPlayer.videoController.slider_timeline.minimum = 0;
2055 mineap 381 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
2056 mineap 370 if(!this.sliderChanging){
2057 mineap 381 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
2058 mineap 370 }
2059     videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
2060     videoPlayer.videoController.slider_timeline.enabled = true;
2061     }catch(error:Error){
2062 mineap 381 VideoDisplay(event.currentTarget).stop();
2063 mineap 370 trace(error.getStackTrace());
2064     }
2065     }
2066    
2067     /**
2068     * ������������������������������������������������������������������������
2069     * @param evt
2070     *
2071     */
2072 mineap 381 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
2073 mineap 370
2074     if(movieEndTimer != null){
2075     movieEndTimer.stop();
2076     movieEndTimer = null;
2077     }
2078     //���������������������������������������������������������
2079     movieEndTimer = new Timer(2000, 1);
2080     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
2081     movieEndTimer.start();
2082    
2083     }
2084    
2085     /**
2086     *
2087     *
2088     */
2089     private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
2090 mineap 512 if (!isCounted)
2091     {
2092 mineap 370 //���������������������
2093     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2094 mineap 512 if (videoId != null)
2095     {
2096 mineap 370 addVideoPlayCount(videoId, true);
2097     }
2098     isCounted = true;
2099     }
2100    
2101     logManager.addLog("***���������������***");
2102    
2103 mineap 512 if (videoPlayer.isRepeat)
2104     {
2105    
2106     /* ���������1��������������� */
2107    
2108     if (isPlayListingPlay)
2109     {
2110     if(isStreamingPlay)
2111     {
2112 mineap 370 logManager.addLog("***���������������������(���������������������)***");
2113     this.seek(0);
2114 mineap 512 if (this.videoDisplay != null)
2115     {
2116 mineap 370 this.videoDisplay.play();
2117     }
2118 mineap 512 }
2119     else
2120     {
2121 mineap 370 logManager.addLog("***���������������������(������������)***");
2122     this.stop();
2123 mineap 751
2124     var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
2125     var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
2126     if (video != null)
2127     {
2128     url = video.getDecodeUrl();
2129     }
2130    
2131 mineap 512 playMovie(
2132 mineap 751 url,
2133 mineap 512 this.videoInfoView.playList,
2134     playingIndex,
2135     this.videoPlayer.title);
2136 mineap 370
2137     }
2138 mineap 512 }
2139     else if(isStreamingPlay)
2140     {
2141 mineap 370 logManager.addLog("***���������������������(���������������������)***");
2142     this.seek(0);
2143 mineap 512 if (this.videoDisplay != null)
2144     {
2145 mineap 370 this.videoDisplay.play();
2146     }
2147 mineap 512 }
2148     else
2149     {
2150 mineap 370 logManager.addLog("***���������������������(������������)***");
2151     this.stop();
2152     this.play();
2153     }
2154 mineap 512 }
2155     else
2156     {
2157    
2158     /* ������������������������������ */
2159    
2160 mineap 370 this.stop();
2161 mineap 512
2162     if (isPlayListingPlay)
2163     {
2164    
2165     /* ��������������������������� */
2166    
2167 mineap 370 logManager.addLog("***���������������(������������)***");
2168     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2169 mineap 512 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2170     {
2171     /* ������������������������������������ */
2172 mineap 370 playingIndex = 0;
2173 mineap 512 if (this.videoPlayer.videoInfoView.isRepeatAll())
2174     {
2175 mineap 751 var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
2176     var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
2177     if (video != null)
2178     {
2179     url = video.getDecodeUrl();
2180     }
2181    
2182 mineap 512 playMovie(
2183 mineap 751 url,
2184 mineap 512 this.videoInfoView.playList,
2185     playingIndex,
2186     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2187 mineap 370 }
2188 mineap 512 }
2189     else
2190     {
2191     /* ������������������������������������ */
2192 mineap 370 playingIndex++;
2193 mineap 751
2194     var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
2195     var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
2196     if (video != null)
2197     {
2198     url = video.getDecodeUrl();
2199     }
2200    
2201 mineap 512 playMovie(
2202 mineap 751 url,
2203 mineap 512 this.videoInfoView.playList,
2204     playingIndex,
2205     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2206 mineap 370 }
2207     }
2208     }
2209     }
2210    
2211    
2212     /**
2213     * SWF������������������������������������������������������������������
2214     *
2215     */
2216     private function movieClipCompleteHandler():void{
2217    
2218     this.lastFrame = 0;
2219     this.lastNicowariFrame = 0;
2220    
2221     if(movieEndTimer != null){
2222     movieEndTimer.stop();
2223     movieEndTimer = null;
2224     }
2225     //���������������������������������������������������������
2226     movieEndTimer = new Timer(2000, 1);
2227     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2228     movieEndTimer.start();
2229    
2230    
2231     }
2232    
2233     /**
2234     *
2235     *
2236     */
2237     private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2238     if(!isCounted){
2239     //���������������������
2240     var videoId:String = LibraryUtil.getVideoKey(this.source);
2241     if(videoId == null){
2242     //���������������������������������������������������������
2243     videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2244     }
2245     if(videoId != null){
2246     addVideoPlayCount(videoId, true);
2247     }
2248     isCounted = true;
2249     }
2250    
2251     logManager.addLog("***���������������***");
2252