Develop and Download Open Source Software

Browse Subversion Repository

Contents of /NNDDv2/trunk/src/org/mineap/nndd/player/PlayerController.as

Parent Directory Parent Directory | Revision Log Revision Log


Revision 673 - (show annotations) (download)
Sat Oct 22 06:00:37 2011 UTC (12 years, 5 months ago) by mineap
File size: 156444 byte(s)
seek命令のシーク先時刻を正しく解析できていない問題を修正
1 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 import flash.display.StageQuality;
9 import flash.errors.IOError;
10 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 import mx.core.FlexGlobals;
30 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 import mx.formatters.NumberFormatter;
36
37 import org.libspark.utils.ForcibleLoader;
38 import org.mineap.nicovideo4as.CommentPost;
39 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 import org.mineap.nndd.myList.MyListManager;
60 import org.mineap.nndd.playList.PlayListManager;
61 import org.mineap.nndd.player.comment.Command;
62 import org.mineap.nndd.player.comment.CommentManager;
63 import org.mineap.nndd.player.comment.Comments;
64 import org.mineap.nndd.player.model.PlayerTagString;
65 import org.mineap.nndd.user.UserManager;
66 import org.mineap.nndd.util.DateUtil;
67 import org.mineap.nndd.util.IchibaBuilder;
68 import org.mineap.nndd.util.LibraryUtil;
69 import org.mineap.nndd.util.NumberUtil;
70 import org.mineap.nndd.util.PathMaker;
71 import org.mineap.nndd.util.RelationTypeUtil;
72 import org.mineap.nndd.util.ThumbInfoAnalyzer;
73 import org.mineap.nndd.util.ThumbInfoUtil;
74 import org.mineap.nndd.util.WebServiceAccessUtil;
75 import org.mineap.util.config.ConfigIO;
76 import org.mineap.util.config.ConfigManager;
77 import org.osmf.events.LoadEvent;
78 import org.osmf.events.MediaPlayerStateChangeEvent;
79 import org.osmf.events.TimeEvent;
80 import org.osmf.layout.ScaleMode;
81 import org.osmf.media.MediaPlayerState;
82
83 import spark.components.VideoDisplay;
84
85 /**
86 * ���������������������������������������������������������������������������GUI������������������������
87 *
88 * @author shiraminekeisuke(MineAP)
89 *
90 */
91 public class PlayerController extends EventDispatcher
92 {
93
94 public static const WINDOW_TYPE_SWF:int = 0;
95 public static const WINDOW_TYPE_FLV:int = 1;
96
97 public static const NG_LIST_RENEW:String = "NgListRenew";
98
99 private var commentManager:CommentManager;
100 private var comments:Comments;
101
102 public var windowType:int = -1;
103 public var videoPlayer:VideoPlayer;
104 public var videoInfoView:VideoInfoView;
105 public var ngListManager:NGListManager;
106 public var libraryManager:ILibraryManager;
107 public var playListManager:PlayListManager;
108
109 private var windowReady:Boolean = false;
110
111 private var swfLoader:SWFLoader = null;
112 private var loader:Loader = null;
113 private var isMovieClipPlaying:Boolean = false;
114
115 private var videoDisplay:VideoDisplay = null;
116
117 private var nicowariSwfLoader:SWFLoader = null;
118
119 private var isStreamingPlay:Boolean = false;
120
121 private var source:String = "";
122
123 private var commentTimer:Timer = new Timer(1000/15);
124 private var commentTimerVpos:int = 0;
125
126 private var lastSeekTime:Number = new Date().time;
127
128 private var time:Number = 0;
129
130 private var pausing:Boolean = false;
131
132 private var downLoadedURL:String = null;
133
134 private var isPlayListingPlay:Boolean = false;
135 private var playingIndex:int = 0;
136
137 private var logManager:LogManager;
138
139 private var mc:MovieClip;
140 private var nicowariMC:MovieClip;
141 public var swfFrameRate:Number = 0;
142
143 public var sliderChanging:Boolean = false;
144
145 private var nicowariTimer:Timer;
146
147 private var isCounted:Boolean = false;
148
149 private var isMovieClipStopping:Boolean = false;
150
151 public var isPlayerClosing:Boolean = false;
152
153 public var _isEconomyMode:Boolean = false;
154
155 private var renewDownloadManager:RenewDownloadManager;
156 private var nnddDownloaderForStreaming:NNDDDownloader;
157 private var playerHistoryManager:PlayerHistoryManager;
158 private var renewDownloadManagerForOldComment:RenewDownloadManager;
159
160 public static const NICO_WARI_HEIGHT:int = 56;
161 public static const NICO_WARI_WIDTH:int = 544;
162
163 public static const NICO_SWF_HEIGHT:int = 384;
164 public static const NICO_SWF_WIDTH:int = 512;
165
166 public static const NICO_VIDEO_WINDOW_HEIGHT:int = 384;
167 public static const NICO_VIDEO_WINDOW_WIDTH:int = 512;
168 public static const NICO_VIDEO_WINDOW_WIDTH_WIDE_MODE:int = 640;
169
170 public static const NICO_VIDEO_PADDING:int = 10;
171
172 public static const WIDE_MODE_ASPECT_RATIO:Number = 1.7;
173
174 //������������������������������������������������������null���
175 private var playingJihou:String = null;
176
177 private var movieEndTimer:Timer = null;
178
179 private var isSwfConverting:Boolean = false;
180
181 private var streamingProgressTimer:Timer = null;
182
183 private var _videoID:String = null;
184
185 private var nnddDownloaderForWatch:NNDDDownloader = null;
186
187 private var lastFrame:int = 0;
188
189 private var lastNicowariFrame:int = 0;
190
191 private var myListLoader:MyListLoader = null;
192
193 private var nicowariCloseTimer:Timer = null;
194
195 private var configIO:ConfigIO;
196
197 private var streamingRetryCount:int = 0;
198
199 private var nicoVideoPageGetRetryTimer:Timer;
200
201 private var nicoVideoAccessRetryTimer:Timer;
202
203 private var nicoRelationInfoLoader:ApiGetRelation = null;
204
205 private var lastLoadedBytes:Number = 0;
206
207 [Embed(source="/player/NNDDicons_play_20x20.png")]
208 private var icon_Play:Class;
209
210 [Embed(source="/player/NNDDicons_pause_20x20.png")]
211 private var icon_Pause:Class;
212
213 [Embed(source="/player/NNDDicons_stop_20x20.png")]
214 private var icon_Stop:Class;
215
216
217 /**
218 * ������������������������Player���������������PlayerController���������<br>
219 * FLV���MP4������������������������Player���SWF������������������������Player���������������<br>
220 * ���������������������������������������<br>
221 *
222 */
223 public function PlayerController()
224 {
225 this.logManager = LogManager.instance;
226 this.libraryManager = LibraryManagerBuilder.instance.libraryManager;
227 this.playListManager = PlayListManager.instance;
228 this.videoPlayer = new VideoPlayer();
229 this.videoInfoView = new VideoInfoView();
230 this.videoInfoView.type = NativeWindowType.UTILITY;
231 ConfigManager.getInstance().reload();
232 this.videoPlayer.init(this, videoInfoView, logManager);
233 this.videoInfoView.init(this, videoPlayer, logManager);
234 this.videoPlayer.addEventListener(AIREvent.WINDOW_COMPLETE, function():void{
235 videoInfoView.activate();
236 videoPlayer.activate();
237 });
238 this.ngListManager = new NGListManager(this, videoPlayer, videoInfoView, logManager);
239 if(libraryManager != null){
240 if(!this.ngListManager.loadNgList(LibraryManagerBuilder.instance.libraryManager.systemFileDir)){
241 this.ngListManager.loadNgList(LibraryManagerBuilder.instance.libraryManager.libraryDir);
242 }
243 }
244 this.commentTimer.addEventListener(TimerEvent.TIMER, commentTimerHandler);
245 this.commentManager = new CommentManager(videoPlayer, videoInfoView, this);
246
247 this.playerHistoryManager = new PlayerHistoryManager();
248
249 }
250
251 /**
252 * ���������������������������
253 * Comments���NgList���null���������������GC������������������
254 *
255 */
256 public function destructor():void{
257
258 isMovieClipStopping = false;
259
260 if(this.movieEndTimer != null){
261 this.movieEndTimer.stop();
262 this.movieEndTimer = null;
263 }
264
265 if(this.commentTimer != null){
266 this.commentTimer.stop();
267 this.commentTimer.reset()
268 }else{
269 this.commentTimer = new Timer(1000/15);
270 this.commentTimer.addEventListener(TimerEvent.TIMER, commentTimerHandler);
271 }
272
273 if(this.comments != null){
274 this.comments.destructor();
275 }
276 this.comments = null;
277 // this.ngList = null;
278
279 if(videoDisplay != null){
280 try{
281 videoDisplay.stop();
282 }catch(error:VideoError){
283 trace(error.getStackTrace());
284 }
285 removeVideoDisplayEventListeners(videoDisplay);
286 videoDisplay.source = null;
287 videoDisplay = null;
288 this.videoPlayer.canvas_video.removeAllChildren();
289 }
290
291 isMovieClipPlaying = false;
292 if(loader != null && !isSwfConverting){
293 SoundMixer.stopAll();
294 loader.unloadAndStop(true);
295 // removeMovieClipEventHandlers(loader);
296 loader = null;
297 this.videoPlayer.canvas_video.removeAllChildren();
298 isSwfConverting = false;
299 }
300 if(swfLoader != null && !isSwfConverting){
301 SoundMixer.stopAll();
302 swfLoader.unloadAndStop(true);
303 swfLoader = null;
304 this.videoPlayer.canvas_video.removeAllChildren();
305 isSwfConverting = false;
306 }
307
308 if(this.nicowariSwfLoader != null){
309 videoPlayer.canvas_nicowari.removeAllChildren();
310 if(nicowariMC != null){
311 this.pauseByNicowari(true);
312 }
313 }
314
315 if(videoPlayer != null && videoPlayer.canvas_nicowari != null){
316 videoPlayer.canvas_nicowari.removeAllChildren();
317 videoPlayer.canvas_nicowari.setConstraintValue("backgroundColor", new int("0x969696"));
318
319 }
320
321 if(streamingProgressTimer != null){
322 streamingProgressTimer.stop();
323 streamingProgressTimer = null;
324 }
325
326 playingJihou = null;
327
328 if(nnddDownloaderForWatch != null){
329 nnddDownloaderForWatch.close(false, false);
330 nnddDownloaderForWatch = null;
331 }
332
333 if(myListLoader != null){
334 myListLoader.close();
335 myListLoader = null;
336 }
337
338 this.lastFrame = 0;
339 this.lastNicowariFrame = 0;
340
341 this.lastLoadedBytes = 0;
342
343 if(videoInfoView != null){
344 videoInfoView.pubUserLinkButtonText = "(���������)";
345 videoInfoView.pubUserNameIconUrl = null;
346 videoInfoView.pubUserName = "(���������)";
347
348 if(videoInfoView.pubUserLinkButton != null){
349 videoInfoView.pubUserLinkButton.label = videoInfoView.pubUserLinkButtonText;
350 videoInfoView.image_pubUserIcon.source = videoInfoView.pubUserNameIconUrl;
351 videoInfoView.label_pubUserName.text = videoInfoView.pubUserName;
352 }
353 }
354
355 isCounted = false;
356
357 }
358
359 /**
360 * ������������������������Player���������������������������<br>
361 * autoPlay���true������������������������init()���������������������������������������������������������������<br>
362 * <b>playMovie()���������������������������</b>
363 *
364 * @param videoPath
365 * @param windowType
366 * @param comments
367 * @param thumbInfoPath
368 * @param ngList
369 * @param autoPlay
370 * @param isStreamingPlay
371 * @param downLoadedURL
372 * @param isPlayListingPlay
373 *
374 */
375 private function init(videoPath:String, windowType:int, comments:Comments, thumbInfoPath:String,
376 autoPlay:Boolean = false, isStreamingPlay:Boolean = false,
377 downLoadedURL:String = null, isPlayListingPlay:Boolean = false, videoId:String = ""):void
378 {
379 this.destructor();
380
381 if(videoPlayer != null){
382 videoPlayer.resetInfo();
383 if(videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
384 videoPlayer.restore();
385 }
386 }
387
388 if(videoInfoView != null){
389 videoInfoView.resetInfo();
390 // videoInfoView.restore();
391 }
392
393 videoPlayer.setControllerEnable(false);
394
395 this._videoID = null;
396 if(videoId != null && videoId != ""){
397 this._videoID = videoId;
398 }
399
400 this.windowReady = false;
401 this.source = videoPath;
402 this.comments = comments;
403 this.time = (new Date).time;
404 this.isStreamingPlay = isStreamingPlay;
405 this.downLoadedURL = downLoadedURL;
406 this.isPlayListingPlay = isPlayListingPlay;
407 this.windowType = windowType;
408
409 if(!isPlayListingPlay){
410 this.videoInfoView.resetPlayList();
411 }
412
413 this.videoPlayer.videoController.resetAlpha(true);
414
415 if(isStreamingPlay){
416 if(streamingProgressTimer != null){
417 streamingProgressTimer.stop();
418 streamingProgressTimer = null;
419 }
420
421 this.videoPlayer.label_playSourceStatus.text = "Streaming:0%";
422 videoInfoView.connectionType = "Streaming";
423 streamingProgressTimer = new Timer(500);
424 streamingProgressTimer.addEventListener(TimerEvent.TIMER, streamingProgressHandler);
425 streamingProgressTimer.start();
426
427 if(this.videoPlayer.title == null){
428 this.videoPlayer.addEventListener(FlexEvent.CREATION_COMPLETE, function():void{
429 this.videoPlayer.title = downLoadedURL.substr(downLoadedURL.lastIndexOf("/") + 1);
430 });
431 }else{
432 this.videoPlayer.title = downLoadedURL.substr(downLoadedURL.lastIndexOf("/") + 1);
433 }
434 }else{
435 this.videoPlayer.label_playSourceStatus.text = "[Local]";
436 videoInfoView.connectionType = "Local";
437 this.streamingRetryCount = 0;
438 if(this.videoPlayer.title == null){
439 this.videoPlayer.addEventListener(FlexEvent.CREATION_COMPLETE, function():void{
440 this.videoPlayer.title = videoPath.substr(videoPath.lastIndexOf("/") + 1);
441 });
442 }else{
443 this.videoPlayer.title = videoPath.substr(videoPath.lastIndexOf("/") + 1);
444 }
445 var file:File = new File(videoPath);
446 if(!file.exists){
447 Alert.show("������������������������������������\n������������������������������������������������������������������������������", "���������");
448 logManager.addLog("������������������������������������������������������������������������������������������������������������������:" + file.nativePath);
449 FlexGlobals.topLevelApplication.activate();
450 return;
451 }
452
453 }
454
455 /* ������������������������������������������������������������������������ */
456 if(!isStreamingPlay && this.videoInfoView.isRenewCommentEachPlay){
457 //���������������������������������������������������������������
458
459 logManager.addLog(Message.START_PLAY_EACH_COMMENT_DOWNLOAD);
460 videoPlayer.label_downloadStatus.text = Message.START_PLAY_EACH_COMMENT_DOWNLOAD;
461
462 if(this._videoID == null){
463 this._videoID = PathMaker.getVideoID(videoPath);
464 }
465
466 if(this._videoID != null && PathMaker.getVideoID(videoPath) == LibraryUtil.getVideoKey(videoPath)){
467
468 if((UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != null && UserManager.instance.password != "")){
469
470 /* ������������������������������������������������ */
471
472 var videoUrl:String = "http://www.nicovideo.jp/watch/"+PathMaker.getVideoID(this._videoID);
473
474 renewCommentAtStart(PathMaker.getVideoID(this._videoID), videoPath, thumbInfoPath, autoPlay);
475
476 }else{
477
478 /* ��������������������������������������������������� */
479 logManager.addLog(Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD + "(������������������������������)");
480 initStart(videoPath, thumbInfoPath, autoPlay);
481
482 }
483
484 }else{
485
486 logManager.addLog(Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD + "(������ID���������������������)");
487 videoPlayer.label_downloadStatus.text = Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD + "(������ID���������������������)";
488
489 var timer:Timer = new Timer(1000, 1);
490 timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:TimerEvent):void{
491 initStart(videoPath, thumbInfoPath, autoPlay);
492
493 timer.stop();
494 timer = null;
495
496 });
497 timer.start();
498
499 }
500 }else{
501 //���������������������������������������������������(������������������������������������������������)
502
503 this._videoID = videoId;
504
505 if(this._videoID == null || this._videoID == ""){
506 this._videoID = PathMaker.getVideoID(videoPlayer.title);
507 }
508
509 logManager.addLog("���������������������������������������:" + this._videoID);
510
511 if(this._videoID != null && this._videoID != ""){
512
513 if(UserManager.instance.user != null && UserManager.instance.user != "" &&
514 UserManager.instance.password != null && UserManager.instance.password != ""){
515
516 myListGroupUpdate(PathMaker.getVideoID(this._videoID));
517
518 }else{
519 //���������������������������������
520 logManager.addLog("���������������������������������������(���������������������������)");
521 }
522
523 }else{
524 //
525 logManager.addLog("���������������������������������������(������ID���������������������)");
526 }
527
528 initStart(videoPath, thumbInfoPath, autoPlay);
529 }
530
531 }
532
533 /**
534 * VideoDisplay���������������SWFLoader���������������������������������������������������������������������
535 *
536 * @param videoPath ���������������
537 * @param thumbInfoPath ������������������������������
538 * @param autoPlay ������������������������������������������
539 */
540 private function initStart(videoPath:String, thumbInfoPath:String, autoPlay:Boolean):void
541 {
542 trace(videoPlayer.stage.quality);
543
544 try{
545 if(_isEconomyMode){
546 videoPlayer.label_economyStatus.text = "������������������������";
547 }else{
548 videoPlayer.label_economyStatus.text = "";
549 }
550
551 videoPlayer.canvas_video.toolTip = null;
552
553 if(isPlayerClosing){
554 stop();
555 destructor();
556 return;
557 }
558
559 commentTimerVpos = 0;
560
561 var text:Text = new Text();
562 text.text = "������������������������������������������������������������������������������������������������\n������������������������������������������������������������������";
563 text.setConstraintValue("left", 10);
564 text.setConstraintValue("top", 10);
565 videoPlayer.canvas_nicowari.addChild(text);
566
567 videoPlayer.label_downloadStatus.text = "";
568 videoInfoView.image_thumbImg.source = "";
569 videoInfoView.text_info.htmlText ="(������������������������)<br />(������������������������)<br />������: ������������: ���������������:"
570
571 if(isStreamingPlay){
572 //������������������DL������������������������������
573 setInfo(downLoadedURL, thumbInfoPath, thumbInfoPath.substring(0, thumbInfoPath.lastIndexOf("/")) + "/nndd[IchibaInfo].html", true);
574
575 videoInfoView.image_thumbImg.source = thumbInfoPath.substring(0, thumbInfoPath.lastIndexOf("/")) + "/nndd[ThumbImg].jpeg";
576 }else{
577 setInfo(videoPath, thumbInfoPath, PathMaker.createNicoIchibaInfoPathByVideoPath(videoPath), false);
578
579 var nnddVideo:NNDDVideo = libraryManager.isExist(PathMaker.getVideoID(videoPath));
580
581 if(nnddVideo != null){
582 videoInfoView.image_thumbImg.source = nnddVideo.thumbUrl;
583 }
584 }
585
586 changeFps(videoInfoView.fps);
587
588 videoPlayer.videoController.label_time.text = "0:00/0:00";
589 videoPlayer.videoController_under.label_time.text = "0:00/0:00";
590
591 if(videoInfoView.isShowAlwaysNicowariArea){
592 //������������������������������������
593 videoPlayer.showNicowariArea();
594
595 }else{
596 //���������������������������������
597 videoPlayer.hideNicowariArea();
598
599 }
600
601 var video:NNDDVideo = libraryManager.isExist(LibraryUtil.getVideoKey(_videoID));
602 if(video != null){
603 HistoryManager.instance.addVideoByNNDDVideo(video);
604 }else{
605 video = new NNDDVideo("http://www.nicovideo.jp/watch/" + PathMaker.getVideoID(_videoID), videoPlayer.title, false, null, null, null, PathMaker.getThumbImgUrl(PathMaker.getVideoID(_videoID)));
606
607 HistoryManager.instance.addVideoByNNDDVideo(video, null, false);
608 }
609
610 if(windowType == PlayerController.WINDOW_TYPE_FLV){
611 //WINDOW_TYPE_FLV���������������������������������
612
613 isMovieClipPlaying = false;
614
615 videoDisplay = new VideoDisplay();
616
617 videoPlayer.label_downloadStatus.text = "";
618
619 if(isStreamingPlay){
620 videoPlayer.label_downloadStatus.text = "���������������...";
621 videoDisplay.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
622 }
623
624 videoPlayer.canvas_video.removeAllChildren();
625 videoPlayer.canvas_video.addChild(videoDisplay);
626
627 videoDisplay.setConstraintValue("bottom", 0);
628 videoDisplay.setConstraintValue("left", 0);
629 videoDisplay.setConstraintValue("right", 0);
630 videoDisplay.setConstraintValue("top", 0);
631
632 if(videoPath.length > 4 && videoPath.substr(0,4) == "http"){
633 videoInfoView.videoServerUrl = videoPath.substring(0, videoPath.lastIndexOf("/"));
634 }else{
635 videoInfoView.videoServerUrl = videoPath;
636 var messageServerUrl:String = PathMaker.createNomalCommentPathByVideoPath(videoPath);
637 if(messageServerUrl != null){
638 videoInfoView.messageServerUrl = messageServerUrl;
639 }
640 }
641 videoInfoView.videoType = "FLV/MP4";
642
643 videoDisplay.autoPlay = autoPlay;
644 videoDisplay.source = videoPath;
645 videoDisplay.autoRewind = false;
646 videoDisplay.volume = videoPlayer.videoController.slider_volume.value;
647 videoPlayer.videoController_under.slider_volume.value = videoPlayer.videoController.slider_volume.value;
648
649 addVideoDisplayEventListeners(videoDisplay);
650
651 commentManager.initComment(comments, videoPlayer.canvas_video);
652 commentManager.setCommentAlpha(videoInfoView.commentAlpha/100);
653
654 windowReady = true;
655
656 if(autoPlay && !isStreamingPlay){
657 time = (new Date).time;
658 commentTimer.start();
659 }
660
661 videoDisplay.addEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
662 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
663 videoDisplay.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void{
664 event.currentTarget.setFocus();
665 });
666
667 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
668 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
669 setVolume(videoPlayer.videoController.slider_volume.value);
670
671 // if(videoInfoView.visible){
672 // videoInfoView.restore();
673 // }
674 if(videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
675 videoPlayer.restore();
676 }
677
678 // if(videoInfoView.visible){
679 // videoInfoView.activate();
680 // }
681 // videoPlayer.activate();
682 videoPlayer.showVideoPlayerAndVideoInfoView();
683
684 windowResized(false);
685
686 videoPlayer.setControllerEnable(true);
687
688 }else if(windowType == PlayerController.WINDOW_TYPE_SWF){
689 //WINODW_TYPE_SWF���������������������������������
690
691 isMovieClipPlaying = true;
692 isSwfConverting = true;
693
694 videoPlayer.label_downloadStatus.text = "SWF������������������������...";
695
696 loader = new Loader();
697 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, convertCompleteHandler);
698 var fLoader:ForcibleLoader = new ForcibleLoader(loader);
699 swfLoader = new SWFLoader();
700 swfLoader.addChild(loader);
701
702 videoPlayer.canvas_video.removeAllChildren();
703 videoPlayer.canvas_video.addChild(swfLoader);
704
705 swfLoader.setConstraintValue("bottom", 0);
706 swfLoader.setConstraintValue("left", 0);
707 swfLoader.setConstraintValue("right", 0);
708 swfLoader.setConstraintValue("top", 0);
709
710 swfLoader.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void{
711 event.currentTarget.setFocus();
712 });
713
714 commentManager.initComment(comments, videoPlayer.canvas_video);
715 commentManager.setCommentAlpha(videoInfoView.commentAlpha/100);
716
717 windowReady = true;
718
719 if(videoPath.length > 4 && videoPath.substr(0,4) == "http"){
720 videoInfoView.videoServerUrl = videoPath.substring(0, videoPath.lastIndexOf("/"));
721 }else{
722 videoInfoView.videoServerUrl = videoPath;
723 var messageServerUrl:String = PathMaker.createNomalCommentPathByVideoPath(videoPath);
724 if(messageServerUrl != null){
725 videoInfoView.messageServerUrl = messageServerUrl;
726 }
727 }
728 videoInfoView.videoType = "SWF";
729 if(autoPlay){
730 fLoader.load(new URLRequest(videoPath));
731 }
732
733 var timer:Timer = new Timer(500, 4);
734 timer.addEventListener(TimerEvent.TIMER, function():void{
735 windowResized(false);
736 });
737 timer.start();
738
739 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
740 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
741
742 // if(videoInfoView.visible){
743 // videoInfoView.restore();
744 // }
745
746 if(videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
747 videoPlayer.restore();
748 }
749
750 // if(videoInfoView.visible){
751 // videoInfoView.activate();
752 // }
753 // videoPlayer.activate();
754 videoPlayer.showVideoPlayerAndVideoInfoView();
755
756 videoPlayer.setControllerEnable(true);
757
758 }
759
760 if(videoInfoView != null && videoInfoView.tabNavigator_comment != null){
761 if(videoInfoView.tabNavigator_comment.selectedIndex == 1){
762 // ���������������������������������������������������������������������������������
763 videoInfoView.reloadOldComment();
764 }else{
765 // ������������������������������������������������������
766 videoInfoView.resetOldCommentDate();
767 }
768 }
769
770 return;
771 }catch(error:Error){
772 trace(error.getStackTrace());
773 logManager.addLog(error + ":" + error.getStackTrace());
774 }
775 }
776
777
778 /**
779 * ���������������������������������������
780 *
781 * @param videoId
782 * @param videoPath
783 * @param thumbInfoPath
784 * @param autoPlay
785 *
786 */
787 private function renewCommentAtStart(videoId:String, videoPath:String, thumbInfoPath:String, autoPlay:Boolean):void{
788
789 var videoName:String = PathMaker.getVideoName(videoPath);
790
791 if(renewDownloadManager != null){
792 renewDownloadManager.close();
793 renewDownloadManager = null;
794 }
795
796 renewDownloadManager = new RenewDownloadManager(null, logManager);
797 renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_COMPLETE, function(event:Event):void{
798 var video:NNDDVideo = libraryManager.isExist(PathMaker.getVideoID(videoPath));
799 if(video == null){
800 try{
801 video = new LocalVideoInfoLoader().loadInfo(videoPath);
802 video.creationDate = new File(videoPath).creationDate;
803 video.modificationDate = new File(videoPath).modificationDate;
804 }catch(error:Error){
805 video = new NNDDVideo(videoPath);
806 }
807 libraryManager.add(video, false);
808 video = libraryManager.isExist(video.key);
809 }
810 var thumbUrl:String = (event.currentTarget as RenewDownloadManager).localThumbUri;
811 var isLocal:Boolean = false;
812 try{
813 //������������������������������������������������������������������������������������
814 var file:File = new File(video.thumbUrl);
815 if(file.exists){
816 isLocal = true;
817 }
818 }catch(e:Error){
819 trace(e);
820 }
821
822 //thumbUrl���URL���������������������������������������������������
823 if(!isLocal){
824 if(thumbUrl != null){
825 //���������������������thumbUrl���������
826 video.thumbUrl = thumbUrl;
827 }else if (video.thumbUrl == null || video.thumbUrl == ""){
828 //thumbUrl���������������==������������������
829 var videoId:String = PathMaker.getVideoID(_videoID);
830 if(videoId != null){
831 video.thumbUrl = PathMaker.getThumbImgUrl(videoId);
832 }else{
833 video.thumbUrl = "";
834 }
835 }
836 }
837
838 libraryManager.update(video, false);
839
840
841 var videoMin:int = video.time / 60;
842 ++videoMin;
843
844 var commentPath:String = PathMaker.createNomalCommentPathByVideoPath(video.getDecodeUrl());
845 var ownerCommentPath:String = PathMaker.createOwnerCommentPathByVideoPath(video.getDecodeUrl());
846 comments = new Comments(commentPath,
847 ownerCommentPath,
848 getCommentListProvider(),
849 getOwnerCommentListProvider(),
850 ngListManager,
851 videoInfoView.isShowOnlyPermissionComment,
852 videoInfoView.isHideSekaShinComment,
853 videoInfoView.showCommentCountPerMin * videoMin,
854 videoInfoView.showOwnerCommentCountPerMin * videoMin,
855 videoInfoView.isNgUpEnable);
856
857 renewDownloadManager = null;
858
859 myListGroupUpdate(PathMaker.getVideoID(_videoID));
860
861 initStart(videoPath, thumbInfoPath, autoPlay);
862 });
863 renewDownloadManager.addEventListener(NNDDDownloader.COMMENT_GET_SUCCESS, getProgressListener);
864 renewDownloadManager.addEventListener(NNDDDownloader.GETFLV_API_ACCESS_SUCCESS, getProgressListener);
865 renewDownloadManager.addEventListener(NNDDDownloader.ICHIBA_INFO_GET_SUCCESS, getProgressListener);
866 renewDownloadManager.addEventListener(NNDDDownloader.LOGIN_SUCCESS, getProgressListener);
867 renewDownloadManager.addEventListener(NNDDDownloader.NICOWARI_GET_SUCCESS, getProgressListener);
868 renewDownloadManager.addEventListener(NNDDDownloader.OWNER_COMMENT_GET_SUCCESS, getProgressListener);
869 renewDownloadManager.addEventListener(NNDDDownloader.THUMB_IMG_GET_SUCCESS, getProgressListener);
870 renewDownloadManager.addEventListener(NNDDDownloader.THUMB_INFO_GET_SUCCESS, getProgressListener);
871 renewDownloadManager.addEventListener(NNDDDownloader.VIDEO_GET_SUCCESS, getProgressListener);
872 renewDownloadManager.addEventListener(NNDDDownloader.WATCH_SUCCESS, getProgressListener);
873 renewDownloadManager.addEventListener(NNDDDownloader.DOWNLOAD_PROCESS_COMPLETE, getProgressListener);
874
875 renewDownloadManager.addEventListener(NNDDDownloader.COMMENT_GET_FAIL, getFailListener);
876 renewDownloadManager.addEventListener(NNDDDownloader.GETFLV_API_ACCESS_FAIL, getFailListener);
877 renewDownloadManager.addEventListener(NNDDDownloader.ICHIBA_INFO_GET_FAIL, getFailListener);
878 renewDownloadManager.addEventListener(NNDDDownloader.LOGIN_FAIL, getFailListener);
879 renewDownloadManager.addEventListener(NNDDDownloader.NICOWARI_GET_FAIL, getFailListener);
880 renewDownloadManager.addEventListener(NNDDDownloader.OWNER_COMMENT_GET_FAIL, getFailListener);
881 renewDownloadManager.addEventListener(NNDDDownloader.THUMB_IMG_GET_FAIL, getFailListener);
882 renewDownloadManager.addEventListener(NNDDDownloader.THUMB_INFO_GET_FAIL, getFailListener);
883 renewDownloadManager.addEventListener(NNDDDownloader.VIDEO_GET_FAIL, getFailListener);
884 renewDownloadManager.addEventListener(NNDDDownloader.WATCH_FAIL, getFailListener);
885
886 renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_FAIL, function(event:Event):void{
887 renewDownloadManager = null;
888 videoPlayer.label_downloadStatus.text = Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD;
889 logManager.addLog(Message.FAIL_PLAY_EACH_COMMENT_DOWNLOAD);
890
891 var timer:Timer = new Timer(1000, 1);
892 timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
893 myListGroupUpdate(PathMaker.getVideoID(_videoID));
894 initStart(videoPath, thumbInfoPath, autoPlay);
895 });
896 timer.start();
897 });
898 renewDownloadManager.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{
899 renewDownloadManager = null;
900 videoPlayer.label_downloadStatus.text = Message.PLAY_EACH_COMMENT_DOWNLOAD_CANCEL;
901 logManager.addLog(Message.PLAY_EACH_COMMENT_DOWNLOAD_CANCEL);
902
903 var timer:Timer = new Timer(1000, 1);
904 timer.addEventListener(TimerEvent.TIMER_COMPLETE, function():void{
905 myListGroupUpdate(PathMaker.getVideoID(_videoID));
906 initStart(videoPath, thumbInfoPath, autoPlay);
907 });
908 timer.start();
909 });
910
911 if(this.videoInfoView.isRenewOtherCommentWithCommentEachPlay){
912 renewDownloadManager.renewForOtherVideo(UserManager.instance.user,
913 UserManager.instance.password, PathMaker.getVideoID(videoId), videoName,
914 new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)),
915 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount(),
916 FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
917 }else{
918 renewDownloadManager.renewForCommentOnly(UserManager.instance.user,
919 UserManager.instance.password, PathMaker.getVideoID(videoId), videoName,
920 new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)),
921 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount(),
922 FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
923 }
924 }
925
926 /**
927 * ���������������������������������
928 * @param date
929 *
930 */
931 public function getOldCommentFromNico(date:Date):void{
932
933 if(renewDownloadManagerForOldComment != null){
934 // ���������������������������
935 renewDownloadManagerForOldComment.close();
936 renewDownloadManagerForOldComment = null;
937 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
938 logManager.addLog("���������������������������������");
939
940 }else{
941 // ������������
942
943 videoInfoView.button_oldComment_reloadFromNico.label = "���������������";
944 logManager.addLog("������������������������������:" + DateUtil.getDateString(date));
945
946 renewDownloadManagerForOldComment = new RenewDownloadManager(null, LogManager.instance);
947 renewDownloadManagerForOldComment.addEventListener(NNDDDownloader.GETWAYBACKKEY_API_ACCESS_FAIL, function(event:Event):void{
948 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
949 logManager.addLog("������������������������������:" + event);
950
951 FlexGlobals.topLevelApplication.activate();
952 Alert.show("���������������������������������������������\n���������������������������������������������������������������������������������������������\n(���������������������������������������������������������������������������)", Message.M_ERROR);
953 });
954 renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{
955 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
956 logManager.addLog("���������������������������������������:" + event);
957
958 renewDownloadManagerForOldComment = null;
959 });
960 renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_COMPLETE, function(event:Event):void{
961 logManager.addLog("������������������������������:" + event);
962 //������������������������������
963 reloadLocalComment(date);
964
965 renewDownloadManagerForOldComment.close();
966 renewDownloadManagerForOldComment = null;
967
968 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
969
970 });
971 renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_FAIL, function(event:Event):void{
972 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
973 logManager.addLog("������������������������������:" + event);
974
975 renewDownloadManagerForOldComment = null;
976
977 FlexGlobals.topLevelApplication.activate();
978 Alert.show("���������������������������������������������", Message.M_ERROR);
979 });
980
981 var videoId:String = PathMaker.getVideoID(this._videoID);
982 var videoName:String = null;
983 var videoPath:File = null;
984 if(isStreamingPlay){
985 videoName = "nndd.flv";
986 videoPath = LibraryManagerBuilder.instance.libraryManager.tempDir;
987 }else{
988 videoName = PathMaker.getVideoName(this.source);
989 videoPath = new File(this.source.substring(0, this.source.lastIndexOf("/")+1))
990 }
991
992 // maxCount���������������������������������������������������������������������������������������������
993 var maxCount:Number = (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount();
994 if(maxCount < 10000){
995 maxCount = 10000;
996 }
997
998 // ���������������������������������������������������������������������
999 renewDownloadManagerForOldComment.renewForCommentOnly(UserManager.instance.user,
1000 UserManager.instance.password, videoId, videoName, videoPath, true,
1001 date, maxCount, FlexGlobals.topLevelApplication.getUseOldTypeCommentGet());
1002
1003 }
1004
1005 }
1006
1007 /**
1008 *
1009 * @param event
1010 *
1011 */
1012 protected function byteloadedChangedEventHandler(event:Event):void{
1013 trace(event.type);
1014 if(videoInfoView.isResizePlayerEachPlay){
1015 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1016 }else{
1017 resizePlayerJustVideoSize();
1018 }
1019 }
1020
1021 /**
1022 *
1023 * @param event
1024 *
1025 */
1026 protected function osmfCurrentTimeChangeEventHandler(event:TimeEvent):void{
1027 trace(event.type + ", time:" + event.time);
1028 if(event.time < 0){
1029 return;
1030 }
1031 if(videoInfoView.isResizePlayerEachPlay){
1032 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1033 }else{
1034 resizePlayerJustVideoSize();
1035 }
1036 }
1037
1038 /**
1039 *
1040 * @param videoId
1041 * @return
1042 *
1043 */
1044 public function myListGroupUpdate(videoId:String):void{
1045
1046 myListLoader = new MyListLoader();
1047 myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_SUCCESS, function(event:Event):void{
1048 var myLists:Array = myListLoader.getMyLists();
1049
1050 if(myLists.length > 0){
1051 var myListNames:Array = new Array();
1052 var myListIds:Array = new Array();
1053
1054 for each(var array:Array in myLists){
1055 myListNames.push(array[0]);
1056 myListIds.push(array[1]);
1057 }
1058
1059 videoInfoView.setMyLists(myListNames, myListIds);
1060 }
1061 myListLoader.close();
1062 });
1063 myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_FAILURE, function(event:ErrorEvent):void{
1064 myListLoader.close();
1065 logManager.addLog("���������������������������������������:" + event + ":" + event.text);
1066 });
1067 myListLoader.getMyListGroup(videoId);
1068
1069 }
1070
1071
1072 /**
1073 *
1074 * @param event
1075 *
1076 */
1077 private function mediaPlayerStateChanged(event:MediaPlayerStateChangeEvent):void
1078 {
1079 if(videoDisplay != null && !isPlayerClosing){
1080 if(event.state != MediaPlayerState.BUFFERING){
1081 videoPlayer.label_downloadStatus.text = "";
1082 videoDisplay.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1083 if(commentTimer != null && !commentTimer.running){
1084 time = (new Date).time;
1085 commentTimer.start();
1086 }
1087 }
1088 }else{
1089 (event.currentTarget as VideoDisplay).stop();
1090 (event.currentTarget as VideoDisplay).removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1091 destructor();
1092 }
1093 }
1094
1095 /**
1096 *
1097 * @param event
1098 *
1099 */
1100 private function convertCompleteHandler(event:Event):void{
1101
1102 isSwfConverting = false;
1103
1104 if(loader != null && !isPlayerClosing){
1105
1106 mc = LoaderInfo(event.currentTarget).loader.content as MovieClip;
1107 swfFrameRate = LoaderInfo(event.currentTarget).loader.contentLoaderInfo.frameRate;
1108 setVolume(videoPlayer.videoController.slider_volume.value);
1109
1110 if(videoInfoView.isResizePlayerEachPlay){
1111 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1112 }else{
1113 resizePlayerJustVideoSize();
1114 }
1115
1116 videoPlayer.label_downloadStatus.text = "";
1117
1118 commentTimer.start();
1119 time = (new Date).time;
1120
1121 }else{
1122
1123 if(mc != null){
1124 mc.stop();
1125 }
1126 destructor();
1127 if(event.currentTarget as LoaderInfo){
1128 LoaderInfo(event.currentTarget).loader.unloadAndStop(true);
1129 }
1130
1131 }
1132
1133 LoaderInfo(event.currentTarget).loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1134
1135 }
1136
1137 /**
1138 * ���������������������������������������������������������������������
1139 *
1140 * @param videoPath
1141 * @param windowType
1142 * @param comments
1143 * @param ngList
1144 * @param playList ���������������������m3u���������
1145 * @param videoNameList ���������������������������������URL���������������������������������������������������������������������������������
1146 * @param playingIndex ������������������������������
1147 * @param autoPlay ������������
1148 * @param isStreamingPlay ���������������������������������������
1149 * @param downLoadedURL ���������������������URL
1150 * @return
1151 *
1152 */
1153 private function initWithPlayList(videoPath:String, windowType:int, comments:Comments, playList:Array, videoNameList:Array, playListName:String, playingIndex:int,
1154 autoPlay:Boolean = false, isStreamingPlay:Boolean = false, downLoadedURL:String = null, videoTitle:String = null):void{
1155
1156 // this.streamingRetryCount = 0;
1157
1158 this.playingIndex = playingIndex;
1159 this.isPlayListingPlay = true;
1160 var videoNameArray:Array = videoNameList;
1161 if(videoNameArray == null){
1162 videoNameArray = new Array();
1163 for(var i:int; i<playList.length; i++){
1164 var url:String = playList[i];
1165 videoNameArray.push(url.substring(url.lastIndexOf("/") + 1));
1166 }
1167 }
1168
1169 if(downLoadedURL == null){
1170 downLoadedURL = videoPath;
1171 }
1172
1173 this.videoInfoView.resetPlayList();
1174 this.videoInfoView.setPlayList(playList, videoNameArray, playListName);
1175
1176 trace("\t"+playList);
1177
1178 this.init(videoPath, windowType, comments, PathMaker.createThmbInfoPathByVideoPath(downLoadedURL), autoPlay, isStreamingPlay, videoTitle, true, LibraryUtil.getVideoKey(videoTitle));
1179 }
1180
1181 /**
1182 * VideoPlayer������������������������������������������������������������������������������
1183 *
1184 * @param url
1185 * @param index
1186 * @return
1187 *
1188 */
1189 public function initForVideoPlayer(url:String, index:int):void{
1190 playMovie(url, this.videoInfoView.playList, index, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(index)));
1191 }
1192
1193 /**
1194 *
1195 * @param isSmoothing
1196 *
1197 */
1198 public function setVideoSmoothing(isSmoothing:Boolean):void{
1199
1200 if (videoDisplay != null && videoDisplay.videoObject != null)
1201 {
1202
1203 if (isSmoothing)
1204 {
1205 // ������������������������
1206
1207 if (videoDisplay.videoObject.videoWidth == videoDisplay.videoObject.width)
1208 {
1209 // ���������������������������������������������������
1210 if (videoInfoView.isSmoothingOnlyNotPixelIdenticalDimensions)
1211 {
1212 // ���������������������������������������������������������
1213 videoDisplay.videoObject.smoothing = false;
1214 }
1215 else
1216 {
1217 // ������������������������������������������������������
1218 videoDisplay.videoObject.smoothing = true;
1219 }
1220 }
1221 else
1222 {
1223 // ���������������������������������������������������������
1224 videoDisplay.videoObject.smoothing = true;
1225 }
1226
1227 }
1228 else
1229 {
1230 // ���������������������������
1231 videoDisplay.videoObject.smoothing = false;
1232 }
1233
1234 }
1235
1236 }
1237
1238 /**
1239 *
1240 * @param value 0-3 default=2
1241 *
1242 */
1243 public function setPlayerQuality(value:int):void{
1244 if(videoPlayer.stage != null){
1245
1246 var qualityStr:String = StageQuality.HIGH;
1247 switch(value){
1248 case 0:
1249 qualityStr = StageQuality.LOW;
1250 break;
1251 case 1:
1252 qualityStr = StageQuality.MEDIUM;
1253 break;
1254 case 2:
1255 qualityStr = StageQuality.HIGH;
1256 break;
1257 case 3:
1258 qualityStr = StageQuality.BEST;
1259 break;
1260 default:
1261 qualityStr = StageQuality.HIGH;
1262 }
1263
1264 videoPlayer.stage.quality = qualityStr;
1265 }
1266 }
1267
1268 /**
1269 * videoDisplay���������������������������������������������������������������������������������������������
1270 * ���������������������������������������������������������������
1271 */
1272 public function resizePlayerJustVideoSize(windowSizeRatio:Number = -1):void{
1273
1274 try{
1275 var ratio:Number = 1;
1276 if(windowSizeRatio != -1){
1277 ratio = windowSizeRatio;
1278 }
1279
1280 //������������������������������
1281 var videoWindowHeight:int = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1282 var videoWindowWidth:int = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1283
1284 //���������������������������������
1285 var nicowariWindowHeight:int = PlayerController.NICO_WARI_HEIGHT * ratio;
1286 var nicowariWindowWidth:int = PlayerController.NICO_WARI_WIDTH * ratio;
1287
1288 //InfoView���������������������������������������
1289 if(isPlayListingPlay){
1290 if(this.videoInfoView != null){
1291 videoInfoView.showPlayingTitle(playingIndex);
1292 }
1293 }
1294
1295 //���������������������������������������
1296 if(this.videoPlayer.stage != null && this.videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
1297 //������������������������������������������ ������������������������������������������������������������
1298 if(this.videoInfoView.isResizePlayerEachPlay || windowSizeRatio != -1){
1299
1300 if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1301 //FLV������������
1302
1303 // ���������������������������
1304 this.setVideoSmoothing(videoInfoView.isSmoothing);
1305
1306 if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_NICO && this.videoDisplay.videoObject.videoHeight > 0){
1307
1308 //��������������������������������������������������������������� && ��������������������������������������������������� (���������������������������������������������������������������������������������)
1309 var isWideVideo:Boolean = false;
1310 if(WIDE_MODE_ASPECT_RATIO < Number(this.videoDisplay.videoObject.videoWidth)/Number(this.videoDisplay.videoObject.videoHeight)){
1311 // ���������������16:9���
1312 isWideVideo = true;
1313 trace("enable 16:9 mode");
1314 }
1315
1316 videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1317 if(this.videoInfoView.isEnableWideMode && isWideVideo){
1318 // logManager.addLog("���������(16:9)���������");
1319 videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH_WIDE_MODE + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1320 }else{
1321 // logManager.addLog("������������(4:3)���������");
1322 videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1323 }
1324
1325 //������������������������������������������
1326 this.videoDisplay.setConstraintValue("left", PlayerController.NICO_VIDEO_PADDING);
1327 this.videoDisplay.setConstraintValue("right", PlayerController.NICO_VIDEO_PADDING);
1328
1329 trace(videoDisplay.width + "," + videoDisplay.height);
1330
1331 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1332 //init������������������������������������������������������������������������������������������������������������������
1333 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1334 // resizePlayerJustVideoSize(windowSizeRatio);
1335 }
1336 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1337 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1338 }
1339
1340 }else if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_VIDEO && this.videoDisplay.videoObject.videoHeight > 0){
1341
1342 //���������������������������������������������������������������������(videoHeight���0���������������������������������������������������������������������)
1343
1344 videoWindowHeight = this.videoDisplay.videoObject.videoHeight * ratio;
1345 videoWindowWidth = this.videoDisplay.videoObject.videoWidth * ratio;
1346
1347 this.videoDisplay.setConstraintValue("bottom", 0);
1348 this.videoDisplay.setConstraintValue("left", 0);
1349 this.videoDisplay.setConstraintValue("right", 0);
1350 this.videoDisplay.setConstraintValue("top", 0);
1351
1352 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1353 //init������������������������������������������������������������������������������������������������������������������
1354 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1355 // resizePlayerJustVideoSize(windowSizeRatio);
1356 }
1357 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1358 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1359 }
1360 }else{
1361 //������������������������������������������������
1362 return;
1363 }
1364
1365 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1366 //SWF������������
1367
1368 //SWF���������������������������������������
1369 videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1370 videoWindowWidth = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1371
1372 }
1373
1374 //TODO ���������������VideoDisplay���������������������������������������������������������������
1375
1376 var rate:Number = PlayerController.NICO_WARI_WIDTH / PlayerController.NICO_WARI_HEIGHT;
1377 if(videoPlayer.canvas_nicowari.height < 1 ){
1378 //������������������������������������������������������������������������������������
1379 videoWindowHeight += int(videoWindowWidth / rate);
1380 }
1381
1382 this.videoPlayer.nativeWindow.height += int(videoWindowHeight - this.videoPlayer.canvas_video_back.height);
1383 this.videoPlayer.nativeWindow.width += int(videoWindowWidth - this.videoPlayer.canvas_video_back.width);
1384
1385 // (this.videoPlayer as Window).validateDisplayList();
1386 // (this.videoPlayer as Window).validateNow();
1387
1388 //������������������������������������������������������������������������������������������������������������������
1389 // var diffH:int = this.videoPlayer.nativeWindow.height - this.videoPlayer.stage.stageHeight;
1390 // var diffW:int = this.videoPlayer.nativeWindow.width - this.videoPlayer.stage.stageWidth;
1391
1392 }
1393 else
1394 {
1395 // ������������������������������������������
1396 if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1397 //FLV������������
1398
1399 // ���������������������������
1400 this.setVideoSmoothing(videoInfoView.isSmoothing);
1401
1402 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1403 //init������������������������������������������������������������������������������������������������������������������
1404 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1405 }
1406 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1407 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1408 }
1409
1410 }
1411
1412 }
1413
1414 }
1415 else
1416 {
1417 if (PlayerController.WINDOW_TYPE_FLV == this.windowType)
1418 {
1419 if (videoInfoView != null)
1420 {
1421 this.setVideoSmoothing(videoInfoView.isSmoothing);
1422 }
1423 }
1424 }
1425
1426 }catch(error:Error){ //������������������������������������������������������������������������������������������
1427 trace(error.getStackTrace());
1428 logManager.addLog("������������������������������������������:" + error + ", " + error.getStackTrace());
1429 stop();
1430 destructor();
1431 }
1432 }
1433
1434
1435 /**
1436 * ������������������������������������������������������������������
1437 * ���������������������������������������������������������������������������������������������
1438 * @return
1439 *
1440 */
1441 public function play():void
1442 {
1443 try{
1444 videoPlayer.canvas_video_back.setFocus();
1445
1446 var newComments:Comments = null;
1447 videoPlayer.canvas_video.toolTip = null;
1448 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1449 if(videoDisplay != null && videoDisplay.playing){
1450 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1451 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1452 this.commentTimer.stop();
1453 this.commentTimer.reset();
1454 videoDisplay.pause();
1455 pausing = true;
1456 }else{
1457 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1458 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1459 if(pausing){
1460 this.videoPlayer.videoController.slider_timeline.enabled = true;
1461 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1462 this.videoDisplay.play();
1463 this.time = (new Date).time;
1464 this.commentTimer.start();
1465 }else{
1466 this.videoPlayer.videoController.slider_timeline.enabled = true;
1467 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1468 this.playMovie(source, null, -1, this.downLoadedURL);
1469 }
1470 pausing = false;
1471 }
1472 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1473 if(isMovieClipPlaying){
1474 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1475 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1476 this.commentTimer.stop();
1477 this.commentTimer.reset();
1478 mc.stop();
1479 isMovieClipPlaying = false;
1480 pausing = true;
1481 }else{
1482 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1483 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1484 if(pausing){
1485 this.videoPlayer.videoController.slider_timeline.enabled = true;
1486 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1487 mc.play();
1488 isMovieClipPlaying = true;
1489 this.time = (new Date).time;
1490 this.commentTimer.start();
1491 }else{
1492 this.videoPlayer.canvas_video.removeAllChildren();
1493 this.videoPlayer.videoController.slider_timeline.enabled = true;
1494 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1495 this.playMovie(source, null, -1, this.downLoadedURL);
1496
1497 }
1498 pausing = false;
1499 }
1500 }else{
1501 if(this.videoPlayer != null && this.videoPlayer.title != null){
1502 this.playMovie(this.videoPlayer.title);
1503 }
1504 }
1505
1506 }catch(error:Error){
1507 trace(error.getStackTrace());
1508 logManager.addLog("���������������������������:" + error + ":" + error.getStackTrace());
1509 }
1510
1511 }
1512
1513
1514 /**
1515 * ������������������������������������������������
1516 * @return
1517 *
1518 */
1519 public function stop():void
1520 {
1521 try{
1522
1523 pausing = false;
1524
1525 if(videoInfoView.isShowAlwaysNicowariArea){
1526 videoPlayer.showNicowariArea();
1527 }else{
1528 videoPlayer.hideNicowariArea();
1529 }
1530
1531 if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1532 videoPlayer.canvas_video_back.setFocus();
1533 videoPlayer.label_downloadStatus.text = "";
1534 videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1535 }
1536
1537 if(this.movieEndTimer != null){
1538 this.movieEndTimer.stop();
1539 this.movieEndTimer = null;
1540 }
1541
1542 if(renewDownloadManager != null){
1543 try{
1544 renewDownloadManager.close();
1545 renewDownloadManager = null;
1546 logManager.addLog("���������������������������������������������������������");
1547 }catch(error:Error){
1548 trace(error);
1549 }
1550 }else{
1551
1552 this.videoPlayer.videoController.button_play.enabled = true;
1553 this.videoPlayer.videoController_under.button_play.enabled = true;
1554 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1555 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1556
1557 this.videoPlayer.videoController_under.slider_timeline.value = 0;
1558 this.videoPlayer.videoController.slider_timeline.value = 0;
1559
1560 this.commentTimerVpos = 0;
1561 this.commentTimer.stop();
1562 this.commentTimer.reset();
1563 this.commentManager.removeAll();
1564
1565 //���������������������������������������������
1566 this.destructor();
1567
1568 //������������������������������������������������������
1569 videoPlayer.canvas_nicowari.removeAllChildren();
1570 if(nicowariMC != null){
1571 this.pauseByNicowari(true);
1572 }
1573
1574 }
1575
1576 }catch(error:Error){
1577 trace(error.getStackTrace());
1578 logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1579 }
1580
1581 }
1582
1583
1584 /**
1585 * ���������������������������������������������������������������������������������
1586 *
1587 */
1588 public function goToTop():void
1589 {
1590 try{
1591
1592 pausing = false;
1593
1594 if(videoInfoView.isShowAlwaysNicowariArea){
1595 videoPlayer.showNicowariArea();
1596 }else{
1597 videoPlayer.hideNicowariArea();
1598 }
1599
1600 if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1601 videoPlayer.canvas_video_back.setFocus();
1602 videoPlayer.label_downloadStatus.text = "";
1603 videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1604 }
1605
1606 if(this.movieEndTimer != null){
1607 this.movieEndTimer.stop();
1608 this.movieEndTimer = null;
1609 }
1610
1611 if(renewDownloadManager != null){
1612 try{
1613 renewDownloadManager.close();
1614 renewDownloadManager = null;
1615 logManager.addLog("���������������������������������������������������������");
1616 }catch(error:Error){
1617 trace(error);
1618 }
1619 }else{
1620
1621 this.videoPlayer.videoController.button_play.enabled = true;
1622 this.videoPlayer.videoController_under.button_play.enabled = true;
1623 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1624 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1625
1626 this.videoPlayer.videoController_under.slider_timeline.value = 0;
1627 this.videoPlayer.videoController.slider_timeline.value = 0;
1628
1629 this.commentTimerVpos = 0;
1630 this.commentTimer.stop();
1631 this.commentTimer.reset();
1632
1633 var playing:Boolean = false;
1634 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1635 if(videoDisplay != null && videoDisplay.playing){
1636 playing = true;
1637 }
1638 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1639 if(isMovieClipPlaying){
1640 playing = true;
1641 }
1642 }
1643
1644 if(playing){
1645 this.play();
1646 }
1647 this.seek(0);
1648
1649
1650 //������������������������������������������������������
1651 videoPlayer.canvas_nicowari.removeAllChildren();
1652 if(nicowariMC != null){
1653 this.pauseByNicowari(true);
1654 }
1655
1656 }
1657
1658 }catch(error:Error){
1659 trace(error.getStackTrace());
1660 logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1661 }
1662 }
1663
1664 /**
1665 * VideoDisplay���������������������������������������������������������
1666 * @param videoDisplay
1667 *
1668 */
1669 private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1670 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1671 videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1672 videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1673 }
1674
1675 /**
1676 * VideoDisplay���������������������������������������������������������
1677 * @param videoDisplay
1678 *
1679 */
1680 private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1681 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1682 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1683 }
1684 if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){
1685 videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1686 }
1687 if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){
1688 videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1689 }
1690 }
1691
1692 /**
1693 *
1694 * @param event
1695 *
1696 */
1697 private function durationChangeEventHandler(event:TimeEvent):void{
1698 if(videoInfoView.isResizePlayerEachPlay){
1699 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1700 }else{
1701 resizePlayerJustVideoSize();
1702 }
1703 }
1704
1705 /**
1706 *
1707 * @param loader
1708 *
1709 */
1710 // private function removeMovieClipEventHandlers(loader:Loader):void{
1711 // if(loader.hasEventListener(Event.COMPLETE)){
1712 // loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1713 // }
1714 // }
1715
1716 /**
1717 * ������������������������������������������������������������������������������
1718 * @return
1719 *
1720 */
1721 public function getStreamingProgress():int{
1722 var value:int = 0;
1723 if(isStreamingPlay){
1724 if(videoDisplay != null){
1725 value = (videoDisplay.bytesLoaded*100 / videoDisplay.bytesTotal);
1726 }else if(loader != null && loader.contentLoaderInfo != null){
1727 value = (loader.contentLoaderInfo.bytesLoaded*100 / loader.contentLoaderInfo.bytesTotal);
1728 }else{
1729 value = 100;
1730 }
1731 }else{
1732 value = 100;
1733 }
1734 return value;
1735 }
1736
1737
1738 /**
1739 * ���������������������������������������������������MB/s������������������
1740 * @return
1741 *
1742 */
1743 public function getStreamingSpeed():Number
1744 {
1745
1746 // timer������1000ms���������������������
1747
1748 var value:Number = 0;
1749 if (isStreamingPlay)
1750 {
1751 if(videoDisplay != null){
1752 value = videoDisplay.bytesLoaded - this.lastLoadedBytes;
1753 this.lastLoadedBytes = videoDisplay.bytesLoaded;
1754 }else if(loader != null && loader.contentLoaderInfo != null){
1755 value = loader.contentLoaderInfo.bytesLoaded - this.lastLoadedBytes;
1756 this.lastLoadedBytes = loader.contentLoaderInfo.bytesLoaded;
1757 }else{
1758 return value;
1759 }
1760
1761 trace(value);
1762
1763 //MB���������
1764 value = value / 1000000;
1765
1766 // MB/s���������
1767 value = value / 1;
1768 }
1769 else
1770 {
1771 // ���������������
1772 }
1773
1774 return value;
1775
1776 }
1777
1778 /**
1779 *
1780 * @return
1781 *
1782 */
1783 public function get bytesLoaded():Number{
1784
1785 var value:Number = 0.0;
1786
1787 if(videoDisplay != null){
1788 value = videoDisplay.bytesLoaded;
1789 }else if(loader != null && loader.contentLoaderInfo != null){
1790 value = loader.contentLoaderInfo.bytesLoaded;
1791 }
1792
1793 return value;
1794 }
1795
1796 /**
1797 *
1798 * @param event
1799 *
1800 */
1801 private function streamingProgressHandler(event:TimerEvent):void{
1802 if(isStreamingPlay){
1803 var value:int = getStreamingProgress();
1804 var speed:Number = getStreamingSpeed();
1805 if(value >= 100){
1806 this.videoPlayer.label_playSourceStatus.text = "Streaming:100%";
1807 videoPlayer.videoController.resetStatusAlpha();
1808 if(streamingProgressTimer != null){
1809 streamingProgressTimer.stop();
1810 }
1811
1812 // 100%���������������������������������������������������������������������������������������
1813 if(this.bytesLoaded <= 64){
1814
1815 var maxCount:int = 1;
1816 var confValue:String = ConfigManager.getInstance().getItem("streamingRetryMaxCount");
1817 if(confValue == null)
1818 {
1819 ConfigManager.getInstance().removeItem("streamingRetryMaxCount");
1820 ConfigManager.getInstance().setItem("streamingRetryMaxCount", maxCount);
1821 }
1822 else
1823 {
1824 maxCount = int(confValue);
1825 }
1826
1827 if(this.streamingRetryCount <= maxCount ){
1828 // ���������������
1829 this.streamingRetryCount++;
1830 var timeStr:String = String(int(10000*this.streamingRetryCount / 1000));
1831 stop();
1832 logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1833 videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + timeStr + "���������" + this.streamingRetryCount +"������ )";
1834
1835 if(nicoVideoAccessRetryTimer != null){
1836 nicoVideoAccessRetryTimer.stop();
1837 nicoVideoAccessRetryTimer = null;
1838 }
1839 nicoVideoAccessRetryTimer = new Timer(10000*this.streamingRetryCount, 1);
1840 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1841 (event.currentTarget as Timer).stop();
1842 play();
1843 });
1844 nicoVideoAccessRetryTimer.start();
1845
1846 }else{
1847 stop();
1848 logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1849 videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1850 }
1851 }else{
1852 // ������������������
1853 this.streamingRetryCount = 0;
1854 }
1855
1856 }else{
1857
1858 var formatter:NumberFormatter = new NumberFormatter();
1859 formatter.precision = 2;
1860 var str:String = formatter.format(speed) + "MB/s"
1861
1862 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
1863 }
1864 }else{
1865 if(streamingProgressTimer != null){
1866 streamingProgressTimer.stop();
1867 }
1868 }
1869 }
1870
1871 /**
1872 * ������������������������������������������������������
1873 * @param evt
1874 *
1875 */
1876 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
1877 try{
1878 var allSec:String="00",allMin:String="0";
1879 var nowSec:String="00",nowMin:String="0";
1880
1881 this.commentTimerVpos = event.time*1000;
1882
1883 nowSec = String(int(this.videoDisplay.currentTime%60));
1884 nowMin = String(int(this.videoDisplay.currentTime/60));
1885
1886 allSec = String(int(this.videoDisplay.duration%60));
1887 allMin = String(int(this.videoDisplay.duration/60));
1888
1889 if(nowSec.length == 1){
1890 nowSec = "0" + nowSec;
1891 }
1892 if(allSec.length == 1){
1893 allSec = "0" + allSec;
1894 }
1895
1896 videoPlayer.videoController_under.slider_timeline.enabled = true;
1897 videoPlayer.videoController_under.slider_timeline.minimum = 0;
1898 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1899 if(!this.sliderChanging){
1900
1901 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1902 this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1903 videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
1904
1905 }
1906 videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1907 videoPlayer.videoController_under.slider_timeline.enabled = true;
1908
1909 videoPlayer.videoController.slider_timeline.enabled = true;
1910 videoPlayer.videoController.slider_timeline.minimum = 0;
1911 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1912 if(!this.sliderChanging){
1913 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
1914 }
1915 videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1916 videoPlayer.videoController.slider_timeline.enabled = true;
1917 }catch(error:Error){
1918 VideoDisplay(event.currentTarget).stop();
1919 trace(error.getStackTrace());
1920 }
1921 }
1922
1923 /**
1924 * ������������������������������������������������������������������������
1925 * @param evt
1926 *
1927 */
1928 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
1929
1930 if(movieEndTimer != null){
1931 movieEndTimer.stop();
1932 movieEndTimer = null;
1933 }
1934 //���������������������������������������������������������
1935 movieEndTimer = new Timer(2000, 1);
1936 movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
1937 movieEndTimer.start();
1938
1939 }
1940
1941 /**
1942 *
1943 *
1944 */
1945 private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
1946 if (!isCounted)
1947 {
1948 //���������������������
1949 var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
1950 if (videoId != null)
1951 {
1952 addVideoPlayCount(videoId, true);
1953 }
1954 isCounted = true;
1955 }
1956
1957 logManager.addLog("***���������������***");
1958
1959 if (videoPlayer.isRepeat)
1960 {
1961
1962 /* ���������1��������������� */
1963
1964 if (isPlayListingPlay)
1965 {
1966 if(isStreamingPlay)
1967 {
1968 logManager.addLog("***���������������������(���������������������)***");
1969 this.seek(0);
1970 if (this.videoDisplay != null)
1971 {
1972 this.videoDisplay.play();
1973 }
1974 }
1975 else
1976 {
1977 logManager.addLog("***���������������������(������������)***");
1978 this.stop();
1979 playMovie(
1980 this.videoInfoView.getPlayListUrl(playingIndex),
1981 this.videoInfoView.playList,
1982 playingIndex,
1983 this.videoPlayer.title);
1984
1985 }
1986 }
1987 else if(isStreamingPlay)
1988 {
1989 logManager.addLog("***���������������������(���������������������)***");
1990 this.seek(0);
1991 if (this.videoDisplay != null)
1992 {
1993 this.videoDisplay.play();
1994 }
1995 }
1996 else
1997 {
1998 logManager.addLog("***���������������������(������������)***");
1999 this.stop();
2000 this.play();
2001 }
2002 }
2003 else
2004 {
2005
2006 /* ������������������������������ */
2007
2008 this.stop();
2009
2010 if (isPlayListingPlay)
2011 {
2012
2013 /* ��������������������������� */
2014
2015 logManager.addLog("***���������������(������������)***");
2016 var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2017 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2018 {
2019 /* ������������������������������������ */
2020 playingIndex = 0;
2021 if (this.videoPlayer.videoInfoView.isRepeatAll())
2022 {
2023 playMovie(
2024 this.videoInfoView.getPlayListUrl(playingIndex),
2025 this.videoInfoView.playList,
2026 playingIndex,
2027 PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2028 }
2029 }
2030 else
2031 {
2032 /* ������������������������������������ */
2033 playingIndex++;
2034 playMovie(
2035 this.videoInfoView.getPlayListUrl(playingIndex),
2036 this.videoInfoView.playList,
2037 playingIndex,
2038 PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2039 }
2040 }
2041 }
2042 }
2043
2044
2045 /**
2046 * SWF������������������������������������������������������������������
2047 *
2048 */
2049 private function movieClipCompleteHandler():void{
2050
2051 this.lastFrame = 0;
2052 this.lastNicowariFrame = 0;
2053
2054 if(movieEndTimer != null){
2055 movieEndTimer.stop();
2056 movieEndTimer = null;
2057 }
2058 //���������������������������������������������������������
2059 movieEndTimer = new Timer(2000, 1);
2060 movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2061 movieEndTimer.start();
2062
2063
2064 }
2065
2066 /**
2067 *
2068 *
2069 */
2070 private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2071 if(!isCounted){
2072 //���������������������
2073 var videoId:String = LibraryUtil.getVideoKey(this.source);
2074 if(videoId == null){
2075 //���������������������������������������������������������
2076 videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2077 }
2078 if(videoId != null){
2079 addVideoPlayCount(videoId, true);
2080 }
2081 isCounted = true;
2082 }
2083
2084 logManager.addLog("***���������������***");
2085 this.lastFrame = 0;
2086 this.lastNicowariFrame = 0;
2087
2088 if(videoPlayer.isRepeat){
2089 if(isPlayListingPlay){
2090 if(isStreamingPlay){
2091 logManager.addLog("***���������������������(���������������������)***");
2092 this.seek(0);
2093 }else{
2094 logManager.addLog("***���������������������(������������)***");
2095 this.stop();
2096 mc.gotoAndStop(0);
2097 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2098 playingIndex, this.videoPlayer.title);
2099 }
2100 }else if(isStreamingPlay){
2101 logManager.addLog("***���������������������(���������������������)***");
2102 this.seek(0);
2103 }else{
2104 logManager.addLog("***���������������������(������������)***");
2105 this.stop();
2106 mc.gotoAndStop(0);
2107 this.play();
2108 }
2109 }else{
2110 this.stop();
2111 mc.gotoAndStop(0);
2112 if(isPlayListingPlay){
2113 logManager.addLog("***���������������(������������)***");
2114 var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2115 if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2116 playingIndex = 0;
2117 if(this.videoPlayer.videoInfoView.isRepeatAll()){
2118 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2119 playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2120 }
2121 }else{
2122 playingIndex++;
2123 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2124 playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2125 }
2126 }
2127 }
2128
2129 isMovieClipStopping = false;
2130 }
2131
2132
2133 /**
2134 * ���������������������ID������������������������������������������������������������1���������������
2135 * @param videoId ���������������������������������������������������ID
2136 * @param isSave ���������������������������������������������������
2137 */
2138 private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2139 var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2140 if(nnddVideo != null){
2141 nnddVideo.playCount = nnddVideo.playCount + 1;
2142 libraryManager.update(nnddVideo, isSave);
2143 trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2144 }else{
2145 //���������������
2146 trace("������������������������������������:" + videoId);
2147 }
2148 }
2149
2150 /**
2151 * ���������������������������������������������
2152 * swf���������������SWF���������������������������������������������������
2153 *
2154 * @param event
2155 *
2156 */
2157 private function commentTimerHandler(event:TimerEvent):void{
2158
2159 if(isPlayerClosing){
2160 if(commentTimer != null){
2161 commentTimer.stop();
2162 commentTimer.reset();
2163 }
2164 return;
2165 }
2166
2167 // ���������������
2168 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2169
2170 var nowSec:String="00",nowMin:String="0";
2171 nowSec = String(int(commentTimerVpos/1000%60));
2172 nowMin = String(int(commentTimerVpos/1000/60));
2173 if(nowSec.length == 1){
2174 nowSec = "0" + nowSec;
2175 }
2176 var nowTime:String = nowMin + ":" + nowSec;
2177
2178 var allSec:String="00",allMin:String="0"
2179 if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2180 allSec = String(int(mc.totalFrames/swfFrameRate%60));
2181 allMin = String(int(mc.totalFrames/swfFrameRate/60));
2182 }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2183 allSec = String(int(videoDisplay.duration%60));
2184 allMin = String(int(videoDisplay.duration/60));
2185 }
2186 if(allSec.length == 1){
2187 allSec = "0" + allSec;
2188 }
2189 var allTime:String = allMin +":" + allSec;
2190
2191 if(!isCounted && commentTimerVpos > 10000){
2192 //���������������������
2193 var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2194 if(videoId != null){
2195 addVideoPlayCount(videoId, false);
2196 }
2197 isCounted = true;
2198 }
2199
2200 //SWF���������������������������������������������������������������������
2201 if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2202
2203 videoPlayer.videoController_under.slider_timeline.enabled = true;
2204 videoPlayer.videoController_under.slider_timeline.minimum = 0;
2205 videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2206
2207 videoPlayer.videoController.slider_timeline.enabled = true;
2208 videoPlayer.videoController.slider_timeline.minimum = 0;
2209 videoPlayer.videoController.slider_timeline.maximum = mc.totalFrames;
2210
2211 if(!this.sliderChanging){
2212 videoPlayer.videoController_under.slider_timeline.value = mc.currentFrame;
2213 videoPlayer.videoController.slider_timeline.value = mc.currentFrame;
2214 }
2215
2216 // trace(nowMin + "/" + nowSec);
2217
2218 videoPlayer.videoController_under.label_time.text = nowTime + "/"+ allTime;
2219 videoPlayer.videoController.label_time.text = nowTime + "/"+ allTime;
2220
2221 if(mc.currentFrame >= mc.totalFrames-1 || mc.currentFrame == this.lastFrame ){
2222 this.lastFrame = mc.currentFrame;
2223 //���������movieClip������������������������������������������������������
2224 if(!isMovieClipStopping){
2225 isMovieClipStopping = true;
2226 movieClipCompleteHandler();
2227 }
2228 return;
2229 }else{
2230 if(!isMovieClipStopping){
2231 this.lastFrame = mc.currentFrame;
2232 }
2233 }
2234 }
2235
2236 var tempTime:Number = (new Date).time;
2237
2238 //SWF������������������������������������������������������������������
2239 if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2240 this.commentTimerVpos += (tempTime - this.time);
2241 }
2242
2243 //���������������������
2244 var commentArray:Vector.<NNDDComment> = this.commentManager.setComment(commentTimerVpos, (tempTime - this.time)*3, this.videoPlayer.isShowComment);
2245 this.commentManager.moveComment(tempTime/1000 - this.time/1000, videoInfoView.showCommentSec);
2246 this.commentManager.removeComment(commentTimerVpos, videoInfoView.showCommentSec * 1000);
2247 this.time = tempTime;
2248
2249 //������������������������������������������������������
2250 if(videoPlayer.videoInfoView.checkbox_SyncComment.selected && videoPlayer.videoInfoView.visible
2251 // && (videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE
2252 // && videoInfoView.isActive)
2253 ){
2254
2255 var lastMin:String = commentManager.getComments().lastMin;
2256
2257 var tempNowTime:String = nowTime;
2258 if(lastMin.length == 3){
2259 //���������������3���������������:���������������������
2260 if(tempNowTime.length == 4){
2261 //���������������:������������4���
2262 tempNowTime = "00" + tempNowTime;
2263 }else if(tempNowTime.length == 5){
2264 //���������������:������������5���
2265 tempNowTime = "0" + tempNowTime;
2266 }
2267 }else if(lastMin.length == 2){
2268 //���������������2���������������:������������5������
2269 if(tempNowTime.length == 4){
2270 //���������������:������������4���
2271 tempNowTime = "0" + tempNowTime;
2272 }
2273
2274 }else if(lastMin.length == 1){
2275 //���������������1���������������:������������4������
2276
2277 }
2278
2279 if(tempNowTime.length > lastMin.length+3){
2280 tempNowTime = tempNowTime.substring(1);
2281 }
2282
2283
2284 var index:int = 0;
2285 if(commentArray.length > 0 && comments != null){
2286 var myComment:NNDDComment = commentArray[0];
2287 for each(var comment:NNDDComment in commentArray){
2288 if(comment.vpos > myComment.vpos){
2289 myComment = comment;
2290 }
2291 }
2292 index = comments.getCommentIndex(tempNowTime, myComment.text);
2293
2294 if(this.videoPlayer.videoInfoView.tabNavigator_comment.selectedIndex == 0){
2295
2296 if(this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition < index){
2297 index = index - (this.videoPlayer.videoInfoView.dataGrid_comment.rowCount) + 2;
2298 if(index > 0){
2299 if(index < this.videoPlayer.videoInfoView.dataGrid_comment.maxVerticalScrollPosition){
2300 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = index;
2301 }else{
2302 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = this.videoPlayer.videoInfoView.dataGrid_comment.maxVerticalScrollPosition;
2303 }
2304 }
2305 }
2306
2307 }else if(this.videoPlayer.videoInfoView.tabNavigator_comment.selectedIndex == 1){
2308
2309 if(this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition < index){
2310 index = index - (this.videoPlayer.videoInfoView.dataGrid_oldComment.rowCount) + 2;
2311 if(index > 0){
2312 if(index < this.videoPlayer.videoInfoView.dataGrid_oldComment.maxVerticalScrollPosition){
2313 this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition = index;
2314 }else{
2315 this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition = this.videoPlayer.videoInfoView.dataGrid_oldComment.maxVerticalScrollPosition;
2316 }
2317 }
2318 }
2319
2320 }
2321
2322 }
2323 }
2324
2325
2326 //������������������������
2327 var date:Date = new Date();
2328 var hh:String = new String(int(date.getHours()));
2329 var mm:String = new String(int(date.getMinutes()));
2330 if(hh.length == 1){
2331 hh = "0" + hh;
2332 }
2333 if(mm.length == 1){
2334 mm = "0" + mm;
2335 }
2336 var jihouResult:Array = commentManager.isJihouSettingTime(hh + mm);
2337 if(jihouResult != null && playingJihou == null){
2338 //������������
2339 playingJihou = hh+mm;
2340 playNicowari(jihouResult[0], jihouResult[1]);
2341 }
2342 if(playingJihou != null && playingJihou != (hh+mm)){
2343 playingJihou = null;
2344 }
2345
2346 if(!this.videoPlayer.isShowComment){
2347 this.commentManager.removeAll();
2348 }
2349
2350 }
2351
2352 /**
2353 * ������������������������������������������������������������������������
2354 * @param volume 0������1���������������������������������������������
2355 * @return ������������������������������������
2356 *
2357 */
2358 public function setVolume(volume:Number):Number{
2359 if(this.windowReady){
2360 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
2361 if(videoDisplay != null){
2362 videoDisplay.volume = volume;
2363 this.videoPlayer.videoController.slider_volume.value = volume;
2364 this.videoPlayer.videoController_under.slider_volume.value = volume;
2365 return videoDisplay.volume;
2366 }
2367 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2368 if(mc != null){
2369 var transForm:SoundTransform = new SoundTransform(volume, 0);
2370 mc.soundTransform = transForm;
2371 this.videoPlayer.videoController.slider_volume.value = volume;
2372 this.videoPlayer.videoController_under.slider_volume.value = volume;
2373 return mc.soundTransform.volume;
2374 }
2375 }
2376 }
2377 return 0;
2378 }
2379
2380 /**
2381 * PlayerController���������������CommentManager������������������
2382 * @return
2383 *
2384 */
2385 public function getCommentManager():CommentManager{
2386 return commentManager;
2387 }
2388
2389 /**
2390 * ���������������������������������������������������������������������������������������������������
2391 * ���������SWF������������������������������������������������������������������������Loader������������������������������������������������������
2392 */
2393 public function windowResized(isCommentRemove:Boolean):void{
2394
2395 if(this.windowReady){
2396
2397 //SWFLoader���������������������������������������
2398 if(swfLoader != null && this.windowType == PlayerController.WINDOW_TYPE_SWF){
2399 //������������������
2400
2401 (swfLoader.getChildAt(0) as Loader).x = 0;
2402 (swfLoader.getChildAt(0) as Loader).y = 0;
2403 var flashDistX:int = (swfLoader.getChildAt(0) as Loader).width - PlayerController.NICO_SWF_WIDTH;
2404 var flashDistY:int = (swfLoader.getChildAt(0) as Loader).height - PlayerController.NICO_SWF_HEIGHT;
2405 var scaleX:Number = swfLoader.width / ((swfLoader.getChildAt(0) as Loader).width - flashDistX);
2406 var scaleY:Number = swfLoader.height / ((swfLoader.getChildAt(0) as Loader).height - flashDistY);
2407 if(scaleX < scaleY){
2408 (swfLoader.getChildAt(0) as Loader).scaleX = scaleX;
2409 (swfLoader.getChildAt(0) as Loader).scaleY = scaleX;
2410 var centorY:int = swfLoader.height / 2;
2411 var newY:int = centorY - (PlayerController.NICO_SWF_HEIGHT*scaleX)/2;
2412 // trace("newY:"+newY);
2413 if(newY > 0){
2414 (swfLoader.getChildAt(0) as Loader).y = newY;
2415 }
2416 }else{
2417 (swfLoader.getChildAt(0) as Loader).scaleX = scaleY;
2418 (swfLoader.getChildAt(0) as Loader).scaleY = scaleY;
2419 var centorX:int = swfLoader.width / 2;
2420 var newX:int = centorX - (PlayerController.NICO_SWF_WIDTH*scaleY)/2;
2421 // trace("newX:"+newX);
2422 if(newX > 0){
2423 (swfLoader.getChildAt(0) as Loader).x = newX;
2424 }
2425 }
2426
2427 }
2428
2429 //���������SWF������������������������������������������
2430 if(nicowariSwfLoader != null){
2431
2432 (nicowariSwfLoader.getChildAt(0) as Loader).x = 0;
2433 (nicowariSwfLoader.getChildAt(0) as Loader).y = 0;
2434
2435 var nicowariDistX:Number = (nicowariSwfLoader.getChildAt(0) as Loader).width - PlayerController.NICO_WARI_WIDTH;
2436 var nicowariDistY:Number = (nicowariSwfLoader.getChildAt(0) as Loader).height - PlayerController.NICO_WARI_HEIGHT;
2437
2438 var nicowariScaleX:Number = nicowariSwfLoader.width / ((nicowariSwfLoader.getChildAt(0) as Loader).width - nicowariDistX);
2439 var nicowariScaleY:Number = nicowariSwfLoader.height / ((nicowariSwfLoader.getChildAt(0) as Loader).height - nicowariDistY);
2440 if(nicowariScaleX < nicowariScaleY){
2441 (nicowariSwfLoader.getChildAt(0) as Loader).scaleX = nicowariScaleX;
2442 (nicowariSwfLoader.getChildAt(0) as Loader).scaleY = nicowariScaleX;
2443 centorY = nicowariSwfLoader.height / 2;
2444 newY = centorY - (PlayerController.NICO_WARI_HEIGHT*nicowariScaleX)/2;
2445 // trace("newY:"+newY);
2446 if(newY > 0){
2447 (nicowariSwfLoader.getChildAt(0) as Loader).y = newY;
2448 }
2449 }else{
2450 (nicowariSwfLoader.getChildAt(0) as Loader).scaleX = nicowariScaleY;
2451 (nicowariSwfLoader.getChildAt(0) as Loader).scaleY = nicowariScaleY;
2452 centorX = nicowariSwfLoader.width / 2;
2453 newX = centorX - (PlayerController.NICO_WARI_WIDTH*nicowariScaleY)/2;
2454 // trace("newX:"+newX);
2455 if(newX > 0){
2456 (nicowariSwfLoader.getChildAt(0) as Loader).x = newX;
2457 }
2458 }
2459 }
2460
2461 if(isCommentRemove){
2462 // ���������������������������
2463 commentManager.removeAll();
2464 }else{
2465 // ���������������������������������
2466 commentManager.validateCommentPosition();
2467 }
2468
2469
2470
2471 }
2472 }
2473
2474 /**
2475 * ���������������seekTime������������������������������������������������
2476 * @param seekTime ������������������������������������������������������������������������������������������������������
2477 *
2478 */
2479 public function seek(seekTime:Number):void{
2480 trace(seekTime);
2481 if(this.windowReady){
2482 if((new Date().time)-lastSeekTime > 1000){
2483 if((videoDisplay != null && videoDisplay.initialized && videoDisplay.duration > 0)
2484 || (swfLoader != null && swfLoader.initialized)){
2485
2486
2487 trace("seekStart:" + seekTime);
2488 this.commentTimer.stop();
2489 this.commentTimer.reset();
2490
2491 //������������������������������������������������������
2492 commentManager.getComments().resetEnableShowFlag();
2493
2494 //���������������������������������������������
2495 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = 0;
2496
2497 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
2498 videoDisplay.seek(seekTime);
2499 commentTimerVpos = seekTime*1000;
2500 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2501 if(pausing){
2502 mc.gotoAndStop(int(seekTime));
2503 }
2504 else
2505 {
2506 mc.gotoAndPlay(int(seekTime));
2507 }
2508 commentTimerVpos = (seekTime/swfFrameRate)*1000;
2509 }
2510
2511 commentManager.removeAll();
2512
2513 if(!this.pausing){
2514 commentTimer.start();
2515 }
2516 lastSeekTime = new Date().time;
2517
2518
2519
2520 }
2521 }
2522 }
2523 }
2524
2525
2526 /**
2527 * ������Player������������������������������������������������
2528 * @return Player���������������������������true������������������������������false���
2529 *
2530 */
2531 public function isOpen():Boolean{
2532 if(this.videoPlayer.nativeWindow != null){
2533 return !this.videoPlayer.closed;
2534 }
2535 return false;
2536 }
2537
2538 /**
2539 * Player������������������Open������������
2540 *
2541 */
2542 public function open():Boolean{
2543 if(this.videoPlayer != null){
2544 this.videoPlayer.open();
2545 }else{
2546 return false;
2547 }
2548 if(this.videoInfoView != null){
2549 this.videoInfoView.open();
2550 }else{
2551 return false;
2552 }
2553 return true;
2554 }
2555
2556 /**
2557 * ���������������������Player������������������������������
2558 *
2559 */
2560 public function playerExit():void{
2561
2562 this.stop();
2563 if(this.videoPlayer != null && this.videoPlayer.nativeWindow != null && !this.videoPlayer.closed){
2564 this.videoPlayer.restore();
2565 // this.videoPlayer.saveStore();
2566 this.videoPlayer.close();
2567 }
2568 if(this.videoPlayer != null && this.videoInfoView.nativeWindow != null && !this.videoInfoView.closed){
2569 this.saveNgList();
2570 this.videoInfoView.restore();
2571 // this.videoInfoView.saveStore();
2572 this.videoInfoView.close();
2573 }
2574 }
2575
2576 /**
2577 * ���������������������ID������������������������������������
2578 * ���������������������������������������������(������������������������������������������������������������)���������������
2579 * ���������������������������������������������
2580 *
2581 * @param videoId
2582 *
2583 */
2584 public function reload(videoId:String):void
2585 {
2586
2587 stop();
2588
2589 var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2590
2591 if (isStreamingPlay || nnddVideo == null)
2592 {
2593 playMovie("http://www.nicovideo.jp/watch/" + videoId);
2594 }
2595 else
2596 {
2597 playMovie(nnddVideo.getDecodeUrl());
2598 }
2599
2600 }
2601
2602 /**
2603 * ���������NG���������������������������������
2604 *
2605 */
2606 public function saveNgList():void{
2607 this.ngListManager.saveNgList(LibraryManagerBuilder.instance.libraryManager.systemFileDir);
2608 }
2609
2610 public function getCommentListProvider():ArrayCollection{
2611 return this.videoPlayer.getCommentListProvider();
2612 }
2613
2614 public function getOwnerCommentListProvider():ArrayCollection{
2615 return this.videoPlayer.videoInfoView.ownerCommentProvider;
2616 }
2617
2618
2619 /**
2620 * ������������������NG���������������������������������������������������
2621 * @param date ������������������������������������
2622 */
2623 public function reloadLocalComment(date:Date = null):void{
2624
2625 if(date != null){
2626 trace(date.time);
2627 }
2628
2629 if(this.videoInfoView.ngListProvider != null){
2630
2631 var videoMin:int = 1;
2632 if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2633 videoMin = mc.totalFrames/swfFrameRate/60
2634 }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2635 videoMin = videoDisplay.duration/60;
2636 }
2637 ++videoMin;
2638
2639 if(!this.isStreamingPlay && this.source != null && this.source != "" ){
2640 comments = new Comments(
2641 PathMaker.createNomalCommentPathByVideoPath(source),
2642 PathMaker.createOwnerCommentPathByVideoPath(source),
2643 this.videoPlayer.getCommentListProvider(),
2644 this.videoPlayer.videoInfoView.ownerCommentProvider,
2645 this.ngListManager,
2646 this.videoInfoView.isShowOnlyPermissionComment,
2647 this.videoInfoView.isHideSekaShinComment,
2648 this.videoInfoView.showCommentCountPerMin * videoMin,
2649 this.videoInfoView.showOwnerCommentCountPerMin * videoMin,
2650 this.videoInfoView.isNgUpEnable, date);
2651 }else if(this.isStreamingPlay){
2652 comments = new Comments(
2653 PathMaker.createNomalCommentPathByVideoPath(LibraryManagerBuilder.instance.libraryManager.tempDir.url + "/nndd.flv"),
2654 PathMaker.createOwnerCommentPathByVideoPath(LibraryManagerBuilder.instance.libraryManager.tempDir.url + "/nndd.flv"),
2655 this.videoPlayer.getCommentListProvider(),
2656 this.videoPlayer.videoInfoView.ownerCommentProvider,
2657 this.ngListManager,
2658 this.videoInfoView.isShowOnlyPermissionComment,
2659 this.videoInfoView.isHideSekaShinComment,
2660 this.videoInfoView.showCommentCountPerMin * videoMin,
2661 this.videoInfoView.showOwnerCommentCountPerMin * videoMin,
2662 this.videoInfoView.isNgUpEnable, date);
2663 }
2664 commentManager.setComments(comments);
2665 }
2666
2667 this.windowResized(true);
2668
2669 }
2670
2671 /**
2672 * ���������������������������������������������������������������
2673 * @param videoPath
2674 *
2675 */
2676 private function setInfo(videoPath:String, thumbInfoPath:String, ichibaInfoPath:String, isStreaming:Boolean):void{
2677
2678 var videoID:String = PathMaker.getVideoID(videoPath);
2679
2680 if(!isStreaming){ //������������������������������������������������������������������������������������������������������������������������������
2681
2682 if(videoID != null && (UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != "") ){
2683
2684 //���������
2685 videoInfoView.ichibaNicoProvider.addItem({
2686 col_image:"",
2687 col_info:"������������������������������",
2688 col_link:""
2689 });
2690 videoPlayer.videoInfoView.owner_text_nico = "";
2691
2692 }else{
2693 videoInfoView.ichibaNicoProvider.addItem({
2694 col_image:"",
2695 col_info:"������������������������������������������������",
2696 col_link:""
2697 });
2698
2699 var thumbInfoAnalyzer:ThumbInfoAnalyzer = null;
2700
2701 if(videoPath != null){
2702
2703 var thumbInfoPath:String = PathMaker.createThmbInfoPathByVideoPath(videoPath);
2704
2705 var fileIO:FileIO = new FileIO(logManager);
2706 var xml:XML = fileIO.loadXMLSync(thumbInfoPath, false);
2707
2708 if(xml != null){
2709 thumbInfoAnalyzer = new ThumbInfoAnalyzer(xml);
2710 }
2711 }
2712
2713 if(thumbInfoAnalyzer != null){
2714
2715 var dateString:String = "(������������������������������)";
2716 var ownerText:String = "(������������������������������������)";
2717 var htmlInfo:String = "";
2718
2719 if(thumbInfoAnalyzer != null){
2720 var dateFormatter:DateFormatter = new DateFormatter();
2721 dateFormatter.formatString = "YYYY/MM/DD JJ:NN:SS";
2722 var date:Date = thumbInfoAnalyzer.getDateByFirst_retrieve();
2723 dateString = "���������:(������������������������)";
2724 if(date != null){
2725 dateString = "���������:" + dateFormatter.format(date);
2726 }
2727
2728 htmlInfo = thumbInfoAnalyzer.htmlTitle + "<br />" + dateString + "<br />" + thumbInfoAnalyzer.playCountAndCommentCountAndMyListCount;
2729
2730 ownerText = thumbInfoAnalyzer.thumbInfoHtml + "\n(���������������������������������)";
2731 }else{
2732
2733 if(videoPlayer.videoInfoView.owner_text_local.length > 1){
2734 ownerText = videoPlayer.videoInfoView.owner_text_local + "\n(���������������������������������)";
2735 }
2736
2737 htmlInfo = "(������������������������������)<br />" + dateString + "<br />(���������������������������������)";
2738 }
2739
2740 videoPlayer.videoInfoView.text_info.htmlText = htmlInfo;
2741
2742 if(videoPlayer.videoInfoView.checkbox_showHtml.selected){
2743 videoPlayer.videoInfoView.owner_text_temp = videoPlayer.videoInfoView.owner_text_nico;
2744 videoPlayer.videoInfoView.owner_text_nico = ownerText;
2745 }else{
2746 videoPlayer.videoInfoView.owner_text_temp = ownerText;
2747 }
2748
2749 videoPlayer.videoInfoView.nicoTagProvider = thumbInfoAnalyzer.tagArray;
2750 videoPlayer.videoInfoView.nicoTagProvider.push("(���������������������������������������������������������������)");
2751 videoPlayer.setTagArray(thumbInfoAnalyzer.tagStrings);
2752
2753 }else{
2754
2755 videoPlayer.videoInfoView.text_info.htmlText = "(������������������������������)<br />(������������������������������)<br />(���������������������������������)";
2756 videoPlayer.videoInfoView.owner_text_nico = "(������������������������������)";
2757
2758 videoPlayer.videoInfoView.nicoTagProvider = videoPlayer.videoInfoView.localTagProvider;
2759 videoPlayer.videoInfoView.nicoTagProvider.push("(���������������������������������������������������������������)");
2760
2761 var tagStrings:Vector.<PlayerTagString> = new Vector.<PlayerTagString>();
2762 for each(var string:String in videoPlayer.videoInfoView.nicoTagProvider)
2763 {
2764 var tagString:PlayerTagString = new PlayerTagString(string);
2765 tagStrings.push(tagString);
2766 }
2767 videoPlayer.setTagArray(tagStrings);
2768
2769 }
2770 }
2771 }
2772
2773 if(videoID != null && (UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != "") ){
2774 retryCount = 0;
2775 setNicoVideoPageInfo(PathMaker.getVideoID(videoID), 0, isStreaming); //���������������������������������������������������
2776 }
2777
2778 setNicoRelationInfo(videoID); //������������������������������������������������������������������������������
2779
2780 setLocalIchibaInfo(ichibaInfoPath, isStreaming);
2781 setLocalThumbInfo(videoID, thumbInfoPath, isStreaming);
2782
2783 }
2784
2785
2786
2787 //-------------------------------------------------------
2788
2789 /**
2790 * ������������������������������������
2791 *
2792 */
2793 public function setNicoRelationInfoForRelationSortTypeChange():void{
2794 var videoId:String = PathMaker.getVideoID(videoPlayer.title);
2795 if(videoId != null){
2796 setNicoRelationInfo(videoId);
2797 }
2798 }
2799
2800 /**
2801 * ������������������������������������������������������������������������
2802 * @param videoID
2803 *
2804 */
2805 private function setNicoRelationInfo(videoID:String):void{
2806
2807 (videoInfoView.relationDataProvider as ArrayCollection).removeAll();
2808
2809 if