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