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