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