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