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 681 - (hide annotations) (download)
Wed Nov 23 12:56:29 2011 UTC (12 years, 4 months ago) by mineap
File size: 156792 byte(s)
一部の動画で184がついてるとコメントが投稿できない問題に対応
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 681 logManager.addLog("���������������������������������:" + this.videoDisplay.videoObject.videoWidth + " x " + this.videoDisplay.videoObject.videoHeight);
1332    
1333 mineap 418 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1334 mineap 370 //init������������������������������������������������������������������������������������������������������������������
1335 mineap 418 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1336 mineap 370 // resizePlayerJustVideoSize(windowSizeRatio);
1337     }
1338 mineap 418 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1339     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1340     }
1341 mineap 370
1342 mineap 381 }else if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_VIDEO && this.videoDisplay.videoObject.videoHeight > 0){
1343 mineap 370
1344     //���������������������������������������������������������������������(videoHeight���0���������������������������������������������������������������������)
1345    
1346 mineap 381 videoWindowHeight = this.videoDisplay.videoObject.videoHeight * ratio;
1347     videoWindowWidth = this.videoDisplay.videoObject.videoWidth * ratio;
1348 mineap 370
1349     this.videoDisplay.setConstraintValue("bottom", 0);
1350     this.videoDisplay.setConstraintValue("left", 0);
1351     this.videoDisplay.setConstraintValue("right", 0);
1352     this.videoDisplay.setConstraintValue("top", 0);
1353    
1354 mineap 418 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1355 mineap 370 //init������������������������������������������������������������������������������������������������������������������
1356 mineap 418 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1357 mineap 370 // resizePlayerJustVideoSize(windowSizeRatio);
1358     }
1359 mineap 418 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1360     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1361     }
1362 mineap 370 }else{
1363     //������������������������������������������������
1364     return;
1365     }
1366    
1367     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1368     //SWF������������
1369    
1370     //SWF���������������������������������������
1371     videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1372     videoWindowWidth = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1373    
1374     }
1375    
1376     //TODO ���������������VideoDisplay���������������������������������������������������������������
1377    
1378     var rate:Number = PlayerController.NICO_WARI_WIDTH / PlayerController.NICO_WARI_HEIGHT;
1379     if(videoPlayer.canvas_nicowari.height < 1 ){
1380     //������������������������������������������������������������������������������������
1381     videoWindowHeight += int(videoWindowWidth / rate);
1382     }
1383    
1384     this.videoPlayer.nativeWindow.height += int(videoWindowHeight - this.videoPlayer.canvas_video_back.height);
1385     this.videoPlayer.nativeWindow.width += int(videoWindowWidth - this.videoPlayer.canvas_video_back.width);
1386    
1387 mineap 681 if (this.videoDisplay != null)
1388     {
1389     logManager.addLog("���������������������������:" + this.videoDisplay.width + " x " + this.videoDisplay.height);
1390     }
1391    
1392 mineap 544 // (this.videoPlayer as Window).validateDisplayList();
1393     // (this.videoPlayer as Window).validateNow();
1394 mineap 370
1395     //������������������������������������������������������������������������������������������������������������������
1396     // var diffH:int = this.videoPlayer.nativeWindow.height - this.videoPlayer.stage.stageHeight;
1397     // var diffW:int = this.videoPlayer.nativeWindow.width - this.videoPlayer.stage.stageWidth;
1398    
1399     }
1400 mineap 525 else
1401     {
1402     // ������������������������������������������
1403     if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1404     //FLV������������
1405    
1406     // ���������������������������
1407 mineap 529 this.setVideoSmoothing(videoInfoView.isSmoothing);
1408 mineap 525
1409     if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1410     //init������������������������������������������������������������������������������������������������������������������
1411     videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1412     }
1413     if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1414     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1415     }
1416    
1417     }
1418    
1419     }
1420 mineap 370
1421     }
1422 mineap 569 else
1423     {
1424     if (PlayerController.WINDOW_TYPE_FLV == this.windowType)
1425     {
1426     if (videoInfoView != null)
1427     {
1428     this.setVideoSmoothing(videoInfoView.isSmoothing);
1429     }
1430     }
1431     }
1432 mineap 370
1433     }catch(error:Error){ //������������������������������������������������������������������������������������������
1434     trace(error.getStackTrace());
1435     logManager.addLog("������������������������������������������:" + error + ", " + error.getStackTrace());
1436     stop();
1437     destructor();
1438     }
1439     }
1440    
1441    
1442     /**
1443     * ������������������������������������������������������������������
1444     * ���������������������������������������������������������������������������������������������
1445     * @return
1446     *
1447     */
1448     public function play():void
1449     {
1450     try{
1451     videoPlayer.canvas_video_back.setFocus();
1452    
1453     var newComments:Comments = null;
1454     videoPlayer.canvas_video.toolTip = null;
1455     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1456     if(videoDisplay != null && videoDisplay.playing){
1457     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1458     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1459     this.commentTimer.stop();
1460     this.commentTimer.reset();
1461     videoDisplay.pause();
1462     pausing = true;
1463     }else{
1464     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1465     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1466     if(pausing){
1467     this.videoPlayer.videoController.slider_timeline.enabled = true;
1468     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1469     this.videoDisplay.play();
1470     this.time = (new Date).time;
1471     this.commentTimer.start();
1472     }else{
1473     this.videoPlayer.videoController.slider_timeline.enabled = true;
1474     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1475 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1476 mineap 370 }
1477     pausing = false;
1478     }
1479     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1480     if(isMovieClipPlaying){
1481     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1482     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1483     this.commentTimer.stop();
1484     this.commentTimer.reset();
1485     mc.stop();
1486     isMovieClipPlaying = false;
1487     pausing = true;
1488     }else{
1489     videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1490     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1491     if(pausing){
1492     this.videoPlayer.videoController.slider_timeline.enabled = true;
1493     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1494     mc.play();
1495     isMovieClipPlaying = true;
1496     this.time = (new Date).time;
1497     this.commentTimer.start();
1498     }else{
1499     this.videoPlayer.canvas_video.removeAllChildren();
1500     this.videoPlayer.videoController.slider_timeline.enabled = true;
1501     this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1502 mineap 507 this.playMovie(source, null, -1, this.downLoadedURL);
1503    
1504 mineap 370 }
1505     pausing = false;
1506     }
1507     }else{
1508     if(this.videoPlayer != null && this.videoPlayer.title != null){
1509     this.playMovie(this.videoPlayer.title);
1510     }
1511     }
1512    
1513     }catch(error:Error){
1514     trace(error.getStackTrace());
1515     logManager.addLog("���������������������������:" + error + ":" + error.getStackTrace());
1516     }
1517    
1518     }
1519    
1520    
1521     /**
1522     * ������������������������������������������������
1523     * @return
1524     *
1525     */
1526     public function stop():void
1527     {
1528     try{
1529    
1530     pausing = false;
1531    
1532     if(videoInfoView.isShowAlwaysNicowariArea){
1533     videoPlayer.showNicowariArea();
1534     }else{
1535     videoPlayer.hideNicowariArea();
1536     }
1537    
1538     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1539     videoPlayer.canvas_video_back.setFocus();
1540     videoPlayer.label_downloadStatus.text = "";
1541     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1542     }
1543    
1544     if(this.movieEndTimer != null){
1545     this.movieEndTimer.stop();
1546     this.movieEndTimer = null;
1547     }
1548    
1549     if(renewDownloadManager != null){
1550     try{
1551     renewDownloadManager.close();
1552     renewDownloadManager = null;
1553     logManager.addLog("���������������������������������������������������������");
1554     }catch(error:Error){
1555     trace(error);
1556     }
1557     }else{
1558    
1559     this.videoPlayer.videoController.button_play.enabled = true;
1560     this.videoPlayer.videoController_under.button_play.enabled = true;
1561     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1562     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1563    
1564     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1565     this.videoPlayer.videoController.slider_timeline.value = 0;
1566    
1567     this.commentTimerVpos = 0;
1568     this.commentTimer.stop();
1569     this.commentTimer.reset();
1570     this.commentManager.removeAll();
1571    
1572     //���������������������������������������������
1573     this.destructor();
1574    
1575     //������������������������������������������������������
1576     videoPlayer.canvas_nicowari.removeAllChildren();
1577     if(nicowariMC != null){
1578     this.pauseByNicowari(true);
1579     }
1580    
1581     }
1582    
1583     }catch(error:Error){
1584     trace(error.getStackTrace());
1585     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1586     }
1587    
1588     }
1589    
1590    
1591     /**
1592 mineap 427 * ���������������������������������������������������������������������������������
1593     *
1594     */
1595     public function goToTop():void
1596     {
1597     try{
1598    
1599     pausing = false;
1600    
1601     if(videoInfoView.isShowAlwaysNicowariArea){
1602     videoPlayer.showNicowariArea();
1603     }else{
1604     videoPlayer.hideNicowariArea();
1605     }
1606    
1607     if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1608     videoPlayer.canvas_video_back.setFocus();
1609     videoPlayer.label_downloadStatus.text = "";
1610     videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1611     }
1612    
1613     if(this.movieEndTimer != null){
1614     this.movieEndTimer.stop();
1615     this.movieEndTimer = null;
1616     }
1617    
1618     if(renewDownloadManager != null){
1619     try{
1620     renewDownloadManager.close();
1621     renewDownloadManager = null;
1622     logManager.addLog("���������������������������������������������������������");
1623     }catch(error:Error){
1624     trace(error);
1625     }
1626     }else{
1627    
1628     this.videoPlayer.videoController.button_play.enabled = true;
1629     this.videoPlayer.videoController_under.button_play.enabled = true;
1630     videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1631     videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1632    
1633     this.videoPlayer.videoController_under.slider_timeline.value = 0;
1634     this.videoPlayer.videoController.slider_timeline.value = 0;
1635    
1636     this.commentTimerVpos = 0;
1637     this.commentTimer.stop();
1638     this.commentTimer.reset();
1639    
1640     var playing:Boolean = false;
1641     if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1642     if(videoDisplay != null && videoDisplay.playing){
1643     playing = true;
1644     }
1645     }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1646     if(isMovieClipPlaying){
1647     playing = true;
1648     }
1649     }
1650    
1651     if(playing){
1652     this.play();
1653     }
1654     this.seek(0);
1655    
1656    
1657     //������������������������������������������������������
1658     videoPlayer.canvas_nicowari.removeAllChildren();
1659     if(nicowariMC != null){
1660     this.pauseByNicowari(true);
1661     }
1662    
1663     }
1664    
1665     }catch(error:Error){
1666     trace(error.getStackTrace());
1667     logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1668     }
1669     }
1670    
1671     /**
1672 mineap 370 * VideoDisplay���������������������������������������������������������
1673     * @param videoDisplay
1674     *
1675     */
1676     private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1677 mineap 381 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1678     videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1679     videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1680 mineap 370 }
1681    
1682     /**
1683     * VideoDisplay���������������������������������������������������������
1684     * @param videoDisplay
1685     *
1686     */
1687     private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1688 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1689     videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1690 mineap 370 }
1691 mineap 381 if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){
1692     videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1693 mineap 370 }
1694     if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){
1695 mineap 381 videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1696 mineap 370 }
1697     }
1698    
1699     /**
1700     *
1701 mineap 381 * @param event
1702     *
1703     */
1704     private function durationChangeEventHandler(event:TimeEvent):void{
1705     if(videoInfoView.isResizePlayerEachPlay){
1706     resizePlayerJustVideoSize(videoPlayer.nowRatio);
1707     }else{
1708     resizePlayerJustVideoSize();
1709     }
1710     }
1711    
1712     /**
1713     *
1714 mineap 370 * @param loader
1715     *
1716     */
1717     // private function removeMovieClipEventHandlers(loader:Loader):void{
1718     // if(loader.hasEventListener(Event.COMPLETE)){
1719     // loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1720     // }
1721     // }
1722    
1723     /**
1724     * ������������������������������������������������������������������������������
1725     * @return
1726     *
1727     */
1728     public function getStreamingProgress():int{
1729     var value:int = 0;
1730     if(isStreamingPlay){
1731     if(videoDisplay != null){
1732     value = (videoDisplay.bytesLoaded*100 / videoDisplay.bytesTotal);
1733     }else if(loader != null && loader.contentLoaderInfo != null){
1734     value = (loader.contentLoaderInfo.bytesLoaded*100 / loader.contentLoaderInfo.bytesTotal);
1735     }else{
1736     value = 100;
1737     }
1738     }else{
1739     value = 100;
1740     }
1741     return value;
1742     }
1743    
1744 mineap 531
1745 mineap 370 /**
1746 mineap 531 * ���������������������������������������������������MB/s������������������
1747     * @return
1748 mineap 370 *
1749 mineap 531 */
1750     public function getStreamingSpeed():Number
1751     {
1752    
1753     // timer������1000ms���������������������
1754    
1755     var value:Number = 0;
1756     if (isStreamingPlay)
1757     {
1758     if(videoDisplay != null){
1759     value = videoDisplay.bytesLoaded - this.lastLoadedBytes;
1760     this.lastLoadedBytes = videoDisplay.bytesLoaded;
1761     }else if(loader != null && loader.contentLoaderInfo != null){
1762     value = loader.contentLoaderInfo.bytesLoaded - this.lastLoadedBytes;
1763     this.lastLoadedBytes = loader.contentLoaderInfo.bytesLoaded;
1764     }else{
1765     return value;
1766     }
1767    
1768     trace(value);
1769    
1770     //MB���������
1771     value = value / 1000000;
1772    
1773     // MB/s���������
1774     value = value / 1;
1775     }
1776     else
1777     {
1778     // ���������������
1779     }
1780    
1781     return value;
1782    
1783     }
1784    
1785     /**
1786     *
1787 mineap 370 * @return
1788     *
1789     */
1790     public function get bytesLoaded():Number{
1791    
1792     var value:Number = 0.0;
1793    
1794     if(videoDisplay != null){
1795     value = videoDisplay.bytesLoaded;
1796     }else if(loader != null && loader.contentLoaderInfo != null){
1797     value = loader.contentLoaderInfo.bytesLoaded;
1798     }
1799    
1800     return value;
1801     }
1802    
1803     /**
1804     *
1805     * @param event
1806     *
1807     */
1808     private function streamingProgressHandler(event:TimerEvent):void{
1809     if(isStreamingPlay){
1810     var value:int = getStreamingProgress();
1811 mineap 531 var speed:Number = getStreamingSpeed();
1812 mineap 370 if(value >= 100){
1813     this.videoPlayer.label_playSourceStatus.text = "Streaming:100%";
1814     videoPlayer.videoController.resetStatusAlpha();
1815     if(streamingProgressTimer != null){
1816     streamingProgressTimer.stop();
1817     }
1818    
1819     // 100%���������������������������������������������������������������������������������������
1820     if(this.bytesLoaded <= 64){
1821 mineap 580
1822     var maxCount:int = 1;
1823     var confValue:String = ConfigManager.getInstance().getItem("streamingRetryMaxCount");
1824     if(confValue == null)
1825     {
1826     ConfigManager.getInstance().removeItem("streamingRetryMaxCount");
1827     ConfigManager.getInstance().setItem("streamingRetryMaxCount", maxCount);
1828     }
1829     else
1830     {
1831     maxCount = int(confValue);
1832     }
1833    
1834     if(this.streamingRetryCount <= maxCount ){
1835 mineap 370 // ���������������
1836     this.streamingRetryCount++;
1837 mineap 573 var timeStr:String = String(int(10000*this.streamingRetryCount / 1000));
1838 mineap 370 stop();
1839     logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1840 mineap 573 videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + timeStr + "���������" + this.streamingRetryCount +"������ )";
1841 mineap 370
1842     if(nicoVideoAccessRetryTimer != null){
1843     nicoVideoAccessRetryTimer.stop();
1844     nicoVideoAccessRetryTimer = null;
1845     }
1846 mineap 573 nicoVideoAccessRetryTimer = new Timer(10000*this.streamingRetryCount, 1);
1847 mineap 370 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1848     (event.currentTarget as Timer).stop();
1849     play();
1850     });
1851     nicoVideoAccessRetryTimer.start();
1852    
1853     }else{
1854     stop();
1855     logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1856     videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1857     }
1858     }else{
1859     // ������������������
1860     this.streamingRetryCount = 0;
1861     }
1862    
1863     }else{
1864    
1865 mineap 531 var formatter:NumberFormatter = new NumberFormatter();
1866     formatter.precision = 2;
1867     var str:String = formatter.format(speed) + "MB/s"
1868 mineap 370
1869 mineap 531 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
1870 mineap 370 }
1871     }else{
1872     if(streamingProgressTimer != null){
1873     streamingProgressTimer.stop();
1874     }
1875     }
1876     }
1877    
1878     /**
1879     * ������������������������������������������������������
1880     * @param evt
1881     *
1882     */
1883 mineap 381 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
1884 mineap 370 try{
1885     var allSec:String="00",allMin:String="0";
1886     var nowSec:String="00",nowMin:String="0";
1887    
1888 mineap 381 this.commentTimerVpos = event.time*1000;
1889 mineap 370
1890 mineap 381 nowSec = String(int(this.videoDisplay.currentTime%60));
1891     nowMin = String(int(this.videoDisplay.currentTime/60));
1892 mineap 370
1893 mineap 381 allSec = String(int(this.videoDisplay.duration%60));
1894     allMin = String(int(this.videoDisplay.duration/60));
1895 mineap 370
1896     if(nowSec.length == 1){
1897     nowSec = "0" + nowSec;
1898     }
1899     if(allSec.length == 1){
1900     allSec = "0" + allSec;
1901     }
1902    
1903     videoPlayer.videoController_under.slider_timeline.enabled = true;
1904     videoPlayer.videoController_under.slider_timeline.minimum = 0;
1905 mineap 381 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1906 mineap 370 if(!this.sliderChanging){
1907    
1908 mineap 381 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1909     this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1910     videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
1911 mineap 370
1912     }
1913     videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1914     videoPlayer.videoController_under.slider_timeline.enabled = true;
1915    
1916     videoPlayer.videoController.slider_timeline.enabled = true;
1917     videoPlayer.videoController.slider_timeline.minimum = 0;
1918 mineap 381 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1919 mineap 370 if(!this.sliderChanging){
1920 mineap 381 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
1921 mineap 370 }
1922     videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1923     videoPlayer.videoController.slider_timeline.enabled = true;
1924     }catch(error:Error){
1925 mineap 381 VideoDisplay(event.currentTarget).stop();
1926 mineap 370 trace(error.getStackTrace());
1927     }
1928     }
1929    
1930     /**
1931     * ������������������������������������������������������������������������
1932     * @param evt
1933     *
1934     */
1935 mineap 381 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
1936 mineap 370
1937     if(movieEndTimer != null){
1938     movieEndTimer.stop();
1939     movieEndTimer = null;
1940     }
1941     //���������������������������������������������������������
1942     movieEndTimer = new Timer(2000, 1);
1943     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
1944     movieEndTimer.start();
1945    
1946     }
1947    
1948     /**
1949     *
1950     *
1951     */
1952     private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
1953 mineap 512 if (!isCounted)
1954     {
1955 mineap 370 //���������������������
1956     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
1957 mineap 512 if (videoId != null)
1958     {
1959 mineap 370 addVideoPlayCount(videoId, true);
1960     }
1961     isCounted = true;
1962     }
1963    
1964     logManager.addLog("***���������������***");
1965    
1966 mineap 512 if (videoPlayer.isRepeat)
1967     {
1968    
1969     /* ���������1��������������� */
1970    
1971     if (isPlayListingPlay)
1972     {
1973     if(isStreamingPlay)
1974     {
1975 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1976     this.seek(0);
1977 mineap 512 if (this.videoDisplay != null)
1978     {
1979 mineap 370 this.videoDisplay.play();
1980     }
1981 mineap 512 }
1982     else
1983     {
1984 mineap 370 logManager.addLog("***���������������������(������������)***");
1985     this.stop();
1986 mineap 512 playMovie(
1987     this.videoInfoView.getPlayListUrl(playingIndex),
1988     this.videoInfoView.playList,
1989     playingIndex,
1990     this.videoPlayer.title);
1991 mineap 370
1992     }
1993 mineap 512 }
1994     else if(isStreamingPlay)
1995     {
1996 mineap 370 logManager.addLog("***���������������������(���������������������)***");
1997     this.seek(0);
1998 mineap 512 if (this.videoDisplay != null)
1999     {
2000 mineap 370 this.videoDisplay.play();
2001     }
2002 mineap 512 }
2003     else
2004     {
2005 mineap 370 logManager.addLog("***���������������������(������������)***");
2006     this.stop();
2007     this.play();
2008     }
2009 mineap 512 }
2010     else
2011     {
2012    
2013     /* ������������������������������ */
2014    
2015 mineap 370 this.stop();
2016 mineap 512
2017     if (isPlayListingPlay)
2018     {
2019    
2020     /* ��������������������������� */
2021    
2022 mineap 370 logManager.addLog("***���������������(������������)***");
2023     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2024 mineap 512 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2025     {
2026     /* ������������������������������������ */
2027 mineap 370 playingIndex = 0;
2028 mineap 512 if (this.videoPlayer.videoInfoView.isRepeatAll())
2029     {
2030     playMovie(
2031     this.videoInfoView.getPlayListUrl(playingIndex),
2032     this.videoInfoView.playList,
2033     playingIndex,
2034     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2035 mineap 370 }
2036 mineap 512 }
2037     else
2038     {
2039     /* ������������������������������������ */
2040 mineap 370 playingIndex++;
2041 mineap 512 playMovie(
2042     this.videoInfoView.getPlayListUrl(playingIndex),
2043     this.videoInfoView.playList,
2044     playingIndex,
2045     PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2046 mineap 370 }
2047     }
2048     }
2049     }
2050    
2051    
2052     /**
2053     * SWF������������������������������������������������������������������
2054     *
2055     */
2056     private function movieClipCompleteHandler():void{
2057    
2058     this.lastFrame = 0;
2059     this.lastNicowariFrame = 0;
2060    
2061     if(movieEndTimer != null){
2062     movieEndTimer.stop();
2063     movieEndTimer = null;
2064     }
2065     //���������������������������������������������������������
2066     movieEndTimer = new Timer(2000, 1);
2067     movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2068     movieEndTimer.start();
2069    
2070    
2071     }
2072    
2073     /**
2074     *
2075     *
2076     */
2077     private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2078     if(!isCounted){
2079     //���������������������
2080     var videoId:String = LibraryUtil.getVideoKey(this.source);
2081     if(videoId == null){
2082     //���������������������������������������������������������
2083     videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2084     }
2085     if(videoId != null){
2086     addVideoPlayCount(videoId, true);
2087     }
2088     isCounted = true;
2089     }
2090    
2091     logManager.addLog("***���������������***");
2092     this.lastFrame = 0;
2093     this.lastNicowariFrame = 0;
2094    
2095     if(videoPlayer.isRepeat){
2096     if(isPlayListingPlay){
2097     if(isStreamingPlay){
2098     logManager.addLog("***���������������������(���������������������)***");
2099     this.seek(0);
2100     }else{
2101     logManager.addLog("***���������������������(������������)***");
2102     this.stop();
2103     mc.gotoAndStop(0);
2104     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2105     playingIndex, this.videoPlayer.title);
2106     }
2107     }else if(isStreamingPlay){
2108     logManager.addLog("***���������������������(���������������������)***");
2109     this.seek(0);
2110     }else{
2111     logManager.addLog("***���������������������(������������)***");
2112     this.stop();
2113     mc.gotoAndStop(0);
2114     this.play();
2115     }
2116     }else{
2117     this.stop();
2118     mc.gotoAndStop(0);
2119     if(isPlayListingPlay){
2120     logManager.addLog("***���������������(������������)***");
2121     var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2122     if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2123     playingIndex = 0;
2124     if(this.videoPlayer.videoInfoView.isRepeatAll()){
2125     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2126     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2127     }
2128     }else{
2129     playingIndex++;
2130     playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2131     playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2132     }
2133     }
2134     }
2135    
2136     isMovieClipStopping = false;
2137     }
2138    
2139    
2140     /**
2141     * ���������������������ID������������������������������������������������������������1���������������
2142     * @param videoId ���������������������������������������������������ID
2143     * @param isSave ���������������������������������������������������
2144     */
2145     private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2146     var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2147     if(nnddVideo != null){
2148     nnddVideo.playCount = nnddVideo.playCount + 1;
2149     libraryManager.update(nnddVideo, isSave);
2150     trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2151     }else{
2152     //���������������
2153     trace("������������������������������������:" + videoId);
2154     }
2155     }
2156    
2157     /**
2158     * ���������������������������������������������
2159     * swf���������������SWF���������������������������������������������������
2160     *
2161     * @param event
2162     *
2163     */
2164     private function commentTimerHandler(event:TimerEvent):void{
2165    
2166     if(isPlayerClosing){
2167     if(commentTimer != null){
2168     commentTimer.stop();
2169     commentTimer.reset();
2170     }
2171     return;
2172     }
2173    
2174 mineap 512 // ���������������
2175 mineap 370 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2176    
2177     var nowSec:String="00",nowMin:String="0";
2178     nowSec = String(int(commentTimerVpos/1000%60));
2179     nowMin = String(int(commentTimerVpos/1000/60));
2180     if(nowSec.length == 1){
2181     nowSec = "0" + nowSec;
2182     }
2183     var nowTime:String = nowMin + ":" + nowSec;
2184    
2185     var allSec:String="00",allMin:String="0"
2186     if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2187     allSec = String(int(mc.totalFrames/swfFrameRate%60));
2188     allMin = String(int(mc.totalFrames/swfFrameRate/60));
2189     }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2190 mineap 381 allSec = String(int(videoDisplay.duration%60));
2191     allMin = String(int(videoDisplay.duration/60));
2192 mineap 370 }
2193     if(allSec.length == 1){
2194     allSec = "0" + allSec;
2195     }
2196     var allTime:String = allMin +":" + allSec;
2197    
2198     if(!isCounted && commentTimerVpos > 10000){
2199     //���������������������
2200     var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2201     if(videoId != null){
2202     addVideoPlayCount(videoId, false);
2203     }
2204     isCounted = true;
2205     }
2206    
2207     //SWF���������������������������������������������������������������������
2208     if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2209    
2210     videoPlayer.videoController_under.slider_timeline.enabled = true;
2211     videoPlayer.videoController_under.slider_timeline.minimum = 0;
2212     videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2213    
2214     videoPlayer.videoController.slider_timeline.enabled = true;
2215     videoPlayer.videoController.slider_timeline.minimum = 0;
2216     videoPlayer.videoController.slider_timeline.maximum = mc.totalFrames;
2217    
2218     if(!this.sliderChanging){
2219     videoPlayer.videoController_under.slider_timeline.value = mc.currentFrame;
2220     videoPlayer.videoController.slider_timeline.value = mc.currentFrame;
2221     }
2222    
2223     // trace(nowMin + "/" + nowSec);
2224    
2225     videoPlayer.videoController_under.label_time.text = nowTime + "/"+ allTime;
2226     videoPlayer.videoController.label_time.text = nowTime + "/"+ allTime;
2227    
2228     if(mc.currentFrame >= mc.totalFrames-1 || mc.currentFrame == this.lastFrame ){
2229     this.lastFrame = mc.currentFrame;
2230     //���������movieClip������������������������������������������������������
2231     if(!isMovieClipStopping){
2232     isMovieClipStopping = true;
2233     movieClipCompleteHandler();
2234     }
2235     return;
2236     }else{
2237     if(!isMovieClipStopping){