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