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 652 - (show annotations) (download)
Tue Sep 6 05:04:11 2011 UTC (12 years, 7 months ago) by mineap
File size: 156152 byte(s)
InfoViewを閉じていても、動画を再生するたびにInfoViewが再表示される問題を修正
<
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 }else{
917 renewDownloadManager.renewForCommentOnly(UserManager.instance.user,
918 UserManager.instance.password, PathMaker.getVideoID(videoId), videoName,
919 new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)),
920 videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount());
921 }
922 }
923
924 /**
925 * ���������������������������������
926 * @param date
927 *
928 */
929 public function getOldCommentFromNico(date:Date):void{
930
931 if(renewDownloadManagerForOldComment != null){
932 // ���������������������������
933 renewDownloadManagerForOldComment.close();
934 renewDownloadManagerForOldComment = null;
935 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
936 logManager.addLog("���������������������������������");
937
938 }else{
939 // ������������
940
941 videoInfoView.button_oldComment_reloadFromNico.label = "���������������";
942 logManager.addLog("������������������������������:" + DateUtil.getDateString(date));
943
944 renewDownloadManagerForOldComment = new RenewDownloadManager(null, LogManager.instance);
945 renewDownloadManagerForOldComment.addEventListener(NNDDDownloader.GETWAYBACKKEY_API_ACCESS_FAIL, function(event:Event):void{
946 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
947 logManager.addLog("������������������������������:" + event);
948
949 FlexGlobals.topLevelApplication.activate();
950 Alert.show("���������������������������������������������\n���������������������������������������������������������������������������������������������\n(���������������������������������������������������������������������������)", Message.M_ERROR);
951 });
952 renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{
953 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
954 logManager.addLog("���������������������������������������:" + event);
955
956 renewDownloadManagerForOldComment = null;
957 });
958 renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_COMPLETE, function(event:Event):void{
959 logManager.addLog("������������������������������:" + event);
960 //������������������������������
961 reloadLocalComment(date);
962
963 renewDownloadManagerForOldComment.close();
964 renewDownloadManagerForOldComment = null;
965
966 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
967
968 });
969 renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_FAIL, function(event:Event):void{
970 videoInfoView.button_oldComment_reloadFromNico.label = "������(������������������)";
971 logManager.addLog("������������������������������:" + event);
972
973 renewDownloadManagerForOldComment = null;
974
975 FlexGlobals.topLevelApplication.activate();
976 Alert.show("���������������������������������������������", Message.M_ERROR);
977 });
978
979 var videoId:String = PathMaker.getVideoID(this._videoID);
980 var videoName:String = null;
981 var videoPath:File = null;
982 if(isStreamingPlay){
983 videoName = "nndd.flv";
984 videoPath = LibraryManagerBuilder.instance.libraryManager.tempDir;
985 }else{
986 videoName = PathMaker.getVideoName(this.source);
987 videoPath = new File(this.source.substring(0, this.source.lastIndexOf("/")+1))
988 }
989
990 // maxCount���������������������������������������������������������������������������������������������
991 var maxCount:Number = (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount();
992 if(maxCount < 10000){
993 maxCount = 10000;
994 }
995
996 // ���������������������������������������������������������������������
997 renewDownloadManagerForOldComment.renewForCommentOnly(UserManager.instance.user,
998 UserManager.instance.password, videoId, videoName, videoPath, true,
999 date, maxCount);
1000
1001 }
1002
1003 }
1004
1005 /**
1006 *
1007 * @param event
1008 *
1009 */
1010 protected function byteloadedChangedEventHandler(event:Event):void{
1011 trace(event.type);
1012 if(videoInfoView.isResizePlayerEachPlay){
1013 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1014 }else{
1015 resizePlayerJustVideoSize();
1016 }
1017 }
1018
1019 /**
1020 *
1021 * @param event
1022 *
1023 */
1024 protected function osmfCurrentTimeChangeEventHandler(event:TimeEvent):void{
1025 trace(event.type + ", time:" + event.time);
1026 if(event.time < 0){
1027 return;
1028 }
1029 if(videoInfoView.isResizePlayerEachPlay){
1030 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1031 }else{
1032 resizePlayerJustVideoSize();
1033 }
1034 }
1035
1036 /**
1037 *
1038 * @param videoId
1039 * @return
1040 *
1041 */
1042 public function myListGroupUpdate(videoId:String):void{
1043
1044 myListLoader = new MyListLoader();
1045 myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_SUCCESS, function(event:Event):void{
1046 var myLists:Array = myListLoader.getMyLists();
1047
1048 if(myLists.length > 0){
1049 var myListNames:Array = new Array();
1050 var myListIds:Array = new Array();
1051
1052 for each(var array:Array in myLists){
1053 myListNames.push(array[0]);
1054 myListIds.push(array[1]);
1055 }
1056
1057 videoInfoView.setMyLists(myListNames, myListIds);
1058 }
1059 myListLoader.close();
1060 });
1061 myListLoader.addEventListener(MyListLoader.GET_MYLISTGROUP_FAILURE, function(event:ErrorEvent):void{
1062 myListLoader.close();
1063 logManager.addLog("���������������������������������������:" + event + ":" + event.text);
1064 });
1065 myListLoader.getMyListGroup(videoId);
1066
1067 }
1068
1069
1070 /**
1071 *
1072 * @param event
1073 *
1074 */
1075 private function mediaPlayerStateChanged(event:MediaPlayerStateChangeEvent):void
1076 {
1077 if(videoDisplay != null && !isPlayerClosing){
1078 if(event.state != MediaPlayerState.BUFFERING){
1079 videoPlayer.label_downloadStatus.text = "";
1080 videoDisplay.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1081 if(commentTimer != null && !commentTimer.running){
1082 time = (new Date).time;
1083 commentTimer.start();
1084 }
1085 }
1086 }else{
1087 (event.currentTarget as VideoDisplay).stop();
1088 (event.currentTarget as VideoDisplay).removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, mediaPlayerStateChanged);
1089 destructor();
1090 }
1091 }
1092
1093 /**
1094 *
1095 * @param event
1096 *
1097 */
1098 private function convertCompleteHandler(event:Event):void{
1099
1100 isSwfConverting = false;
1101
1102 if(loader != null && !isPlayerClosing){
1103
1104 mc = LoaderInfo(event.currentTarget).loader.content as MovieClip;
1105 swfFrameRate = LoaderInfo(event.currentTarget).loader.contentLoaderInfo.frameRate;
1106 setVolume(videoPlayer.videoController.slider_volume.value);
1107
1108 if(videoInfoView.isResizePlayerEachPlay){
1109 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1110 }else{
1111 resizePlayerJustVideoSize();
1112 }
1113
1114 videoPlayer.label_downloadStatus.text = "";
1115
1116 commentTimer.start();
1117 time = (new Date).time;
1118
1119 }else{
1120
1121 if(mc != null){
1122 mc.stop();
1123 }
1124 destructor();
1125 if(event.currentTarget as LoaderInfo){
1126 LoaderInfo(event.currentTarget).loader.unloadAndStop(true);
1127 }
1128
1129 }
1130
1131 LoaderInfo(event.currentTarget).loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1132
1133 }
1134
1135 /**
1136 * ���������������������������������������������������������������������
1137 *
1138 * @param videoPath
1139 * @param windowType
1140 * @param comments
1141 * @param ngList
1142 * @param playList ���������������������m3u���������
1143 * @param videoNameList ���������������������������������URL���������������������������������������������������������������������������������
1144 * @param playingIndex ������������������������������
1145 * @param autoPlay ������������
1146 * @param isStreamingPlay ���������������������������������������
1147 * @param downLoadedURL ���������������������URL
1148 * @return
1149 *
1150 */
1151 private function initWithPlayList(videoPath:String, windowType:int, comments:Comments, playList:Array, videoNameList:Array, playListName:String, playingIndex:int,
1152 autoPlay:Boolean = false, isStreamingPlay:Boolean = false, downLoadedURL:String = null, videoTitle:String = null):void{
1153
1154 // this.streamingRetryCount = 0;
1155
1156 this.playingIndex = playingIndex;
1157 this.isPlayListingPlay = true;
1158 var videoNameArray:Array = videoNameList;
1159 if(videoNameArray == null){
1160 videoNameArray = new Array();
1161 for(var i:int; i<playList.length; i++){
1162 var url:String = playList[i];
1163 videoNameArray.push(url.substring(url.lastIndexOf("/") + 1));
1164 }
1165 }
1166
1167 if(downLoadedURL == null){
1168 downLoadedURL = videoPath;
1169 }
1170
1171 this.videoInfoView.resetPlayList();
1172 this.videoInfoView.setPlayList(playList, videoNameArray, playListName);
1173
1174 trace("\t"+playList);
1175
1176 this.init(videoPath, windowType, comments, PathMaker.createThmbInfoPathByVideoPath(downLoadedURL), autoPlay, isStreamingPlay, videoTitle, true, LibraryUtil.getVideoKey(videoTitle));
1177 }
1178
1179 /**
1180 * VideoPlayer������������������������������������������������������������������������������
1181 *
1182 * @param url
1183 * @param index
1184 * @return
1185 *
1186 */
1187 public function initForVideoPlayer(url:String, index:int):void{
1188 playMovie(url, this.videoInfoView.playList, index, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(index)));
1189 }
1190
1191 /**
1192 *
1193 * @param isSmoothing
1194 *
1195 */
1196 public function setVideoSmoothing(isSmoothing:Boolean):void{
1197
1198 if (videoDisplay != null && videoDisplay.videoObject != null)
1199 {
1200
1201 if (isSmoothing)
1202 {
1203 // ������������������������
1204
1205 if (videoDisplay.videoObject.videoWidth == videoDisplay.videoObject.width)
1206 {
1207 // ���������������������������������������������������
1208 if (videoInfoView.isSmoothingOnlyNotPixelIdenticalDimensions)
1209 {
1210 // ���������������������������������������������������������
1211 videoDisplay.videoObject.smoothing = false;
1212 }
1213 else
1214 {
1215 // ������������������������������������������������������
1216 videoDisplay.videoObject.smoothing = true;
1217 }
1218 }
1219 else
1220 {
1221 // ���������������������������������������������������������
1222 videoDisplay.videoObject.smoothing = true;
1223 }
1224
1225 }
1226 else
1227 {
1228 // ���������������������������
1229 videoDisplay.videoObject.smoothing = false;
1230 }
1231
1232 }
1233
1234 }
1235
1236 /**
1237 *
1238 * @param value 0-3 default=2
1239 *
1240 */
1241 public function setPlayerQuality(value:int):void{
1242 if(videoPlayer.stage != null){
1243
1244 var qualityStr:String = StageQuality.HIGH;
1245 switch(value){
1246 case 0:
1247 qualityStr = StageQuality.LOW;
1248 break;
1249 case 1:
1250 qualityStr = StageQuality.MEDIUM;
1251 break;
1252 case 2:
1253 qualityStr = StageQuality.HIGH;
1254 break;
1255 case 3:
1256 qualityStr = StageQuality.BEST;
1257 break;
1258 default:
1259 qualityStr = StageQuality.HIGH;
1260 }
1261
1262 videoPlayer.stage.quality = qualityStr;
1263 }
1264 }
1265
1266 /**
1267 * videoDisplay���������������������������������������������������������������������������������������������
1268 * ���������������������������������������������������������������
1269 */
1270 public function resizePlayerJustVideoSize(windowSizeRatio:Number = -1):void{
1271
1272 try{
1273 var ratio:Number = 1;
1274 if(windowSizeRatio != -1){
1275 ratio = windowSizeRatio;
1276 }
1277
1278 //������������������������������
1279 var videoWindowHeight:int = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1280 var videoWindowWidth:int = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1281
1282 //���������������������������������
1283 var nicowariWindowHeight:int = PlayerController.NICO_WARI_HEIGHT * ratio;
1284 var nicowariWindowWidth:int = PlayerController.NICO_WARI_WIDTH * ratio;
1285
1286 //InfoView���������������������������������������
1287 if(isPlayListingPlay){
1288 if(this.videoInfoView != null){
1289 videoInfoView.showPlayingTitle(playingIndex);
1290 }
1291 }
1292
1293 //���������������������������������������
1294 if(this.videoPlayer.stage != null && this.videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE){
1295 //������������������������������������������ ������������������������������������������������������������
1296 if(this.videoInfoView.isResizePlayerEachPlay || windowSizeRatio != -1){
1297
1298 if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1299 //FLV������������
1300
1301 // ���������������������������
1302 this.setVideoSmoothing(videoInfoView.isSmoothing);
1303
1304 if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_NICO && this.videoDisplay.videoObject.videoHeight > 0){
1305
1306 //��������������������������������������������������������������� && ��������������������������������������������������� (���������������������������������������������������������������������������������)
1307 var isWideVideo:Boolean = false;
1308 if(WIDE_MODE_ASPECT_RATIO < Number(this.videoDisplay.videoObject.videoWidth)/Number(this.videoDisplay.videoObject.videoHeight)){
1309 // ���������������16:9���
1310 isWideVideo = true;
1311 trace("enable 16:9 mode");
1312 }
1313
1314 videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1315 if(this.videoInfoView.isEnableWideMode && isWideVideo){
1316 // logManager.addLog("���������(16:9)���������");
1317 videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH_WIDE_MODE + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1318 }else{
1319 // logManager.addLog("������������(4:3)���������");
1320 videoWindowWidth = (PlayerController.NICO_VIDEO_WINDOW_WIDTH + PlayerController.NICO_VIDEO_PADDING*2) * ratio;
1321 }
1322
1323 //������������������������������������������
1324 this.videoDisplay.setConstraintValue("left", PlayerController.NICO_VIDEO_PADDING);
1325 this.videoDisplay.setConstraintValue("right", PlayerController.NICO_VIDEO_PADDING);
1326
1327 trace(videoDisplay.width + "," + videoDisplay.height);
1328
1329 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1330 //init������������������������������������������������������������������������������������������������������������������
1331 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1332 // resizePlayerJustVideoSize(windowSizeRatio);
1333 }
1334 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1335 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1336 }
1337
1338 }else if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_VIDEO && this.videoDisplay.videoObject.videoHeight > 0){
1339
1340 //���������������������������������������������������������������������(videoHeight���0���������������������������������������������������������������������)
1341
1342 videoWindowHeight = this.videoDisplay.videoObject.videoHeight * ratio;
1343 videoWindowWidth = this.videoDisplay.videoObject.videoWidth * ratio;
1344
1345 this.videoDisplay.setConstraintValue("bottom", 0);
1346 this.videoDisplay.setConstraintValue("left", 0);
1347 this.videoDisplay.setConstraintValue("right", 0);
1348 this.videoDisplay.setConstraintValue("top", 0);
1349
1350 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1351 //init������������������������������������������������������������������������������������������������������������������
1352 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1353 // resizePlayerJustVideoSize(windowSizeRatio);
1354 }
1355 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1356 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1357 }
1358 }else{
1359 //������������������������������������������������
1360 return;
1361 }
1362
1363 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1364 //SWF������������
1365
1366 //SWF���������������������������������������
1367 videoWindowHeight = PlayerController.NICO_VIDEO_WINDOW_HEIGHT * ratio;
1368 videoWindowWidth = PlayerController.NICO_VIDEO_WINDOW_WIDTH * ratio;
1369
1370 }
1371
1372 //TODO ���������������VideoDisplay���������������������������������������������������������������
1373
1374 var rate:Number = PlayerController.NICO_WARI_WIDTH / PlayerController.NICO_WARI_HEIGHT;
1375 if(videoPlayer.canvas_nicowari.height < 1 ){
1376 //������������������������������������������������������������������������������������
1377 videoWindowHeight += int(videoWindowWidth / rate);
1378 }
1379
1380 this.videoPlayer.nativeWindow.height += int(videoWindowHeight - this.videoPlayer.canvas_video_back.height);
1381 this.videoPlayer.nativeWindow.width += int(videoWindowWidth - this.videoPlayer.canvas_video_back.width);
1382
1383 // (this.videoPlayer as Window).validateDisplayList();
1384 // (this.videoPlayer as Window).validateNow();
1385
1386 //������������������������������������������������������������������������������������������������������������������
1387 // var diffH:int = this.videoPlayer.nativeWindow.height - this.videoPlayer.stage.stageHeight;
1388 // var diffW:int = this.videoPlayer.nativeWindow.width - this.videoPlayer.stage.stageWidth;
1389
1390 }
1391 else
1392 {
1393 // ������������������������������������������
1394 if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){
1395 //FLV������������
1396
1397 // ���������������������������
1398 this.setVideoSmoothing(videoInfoView.isSmoothing);
1399
1400 if(videoDisplay.hasEventListener(LoadEvent.BYTES_LOADED_CHANGE)){
1401 //init������������������������������������������������������������������������������������������������������������������
1402 videoDisplay.removeEventListener(LoadEvent.BYTES_LOADED_CHANGE, byteloadedChangedEventHandler);
1403 }
1404 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1405 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, osmfCurrentTimeChangeEventHandler);
1406 }
1407
1408 }
1409
1410 }
1411
1412 }
1413 else
1414 {
1415 if (PlayerController.WINDOW_TYPE_FLV == this.windowType)
1416 {
1417 if (videoInfoView != null)
1418 {
1419 this.setVideoSmoothing(videoInfoView.isSmoothing);
1420 }
1421 }
1422 }
1423
1424 }catch(error:Error){ //������������������������������������������������������������������������������������������
1425 trace(error.getStackTrace());
1426 logManager.addLog("������������������������������������������:" + error + ", " + error.getStackTrace());
1427 stop();
1428 destructor();
1429 }
1430 }
1431
1432
1433 /**
1434 * ������������������������������������������������������������������
1435 * ���������������������������������������������������������������������������������������������
1436 * @return
1437 *
1438 */
1439 public function play():void
1440 {
1441 try{
1442 videoPlayer.canvas_video_back.setFocus();
1443
1444 var newComments:Comments = null;
1445 videoPlayer.canvas_video.toolTip = null;
1446 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1447 if(videoDisplay != null && videoDisplay.playing){
1448 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1449 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1450 this.commentTimer.stop();
1451 this.commentTimer.reset();
1452 videoDisplay.pause();
1453 pausing = true;
1454 }else{
1455 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1456 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1457 if(pausing){
1458 this.videoPlayer.videoController.slider_timeline.enabled = true;
1459 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1460 this.videoDisplay.play();
1461 this.time = (new Date).time;
1462 this.commentTimer.start();
1463 }else{
1464 this.videoPlayer.videoController.slider_timeline.enabled = true;
1465 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1466 this.playMovie(source, null, -1, this.downLoadedURL);
1467 }
1468 pausing = false;
1469 }
1470 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1471 if(isMovieClipPlaying){
1472 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1473 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1474 this.commentTimer.stop();
1475 this.commentTimer.reset();
1476 mc.stop();
1477 isMovieClipPlaying = false;
1478 pausing = true;
1479 }else{
1480 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1481 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1482 if(pausing){
1483 this.videoPlayer.videoController.slider_timeline.enabled = true;
1484 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1485 mc.play();
1486 isMovieClipPlaying = true;
1487 this.time = (new Date).time;
1488 this.commentTimer.start();
1489 }else{
1490 this.videoPlayer.canvas_video.removeAllChildren();
1491 this.videoPlayer.videoController.slider_timeline.enabled = true;
1492 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1493 this.playMovie(source, null, -1, this.downLoadedURL);
1494
1495 }
1496 pausing = false;
1497 }
1498 }else{
1499 if(this.videoPlayer != null && this.videoPlayer.title != null){
1500 this.playMovie(this.videoPlayer.title);
1501 }
1502 }
1503
1504 }catch(error:Error){
1505 trace(error.getStackTrace());
1506 logManager.addLog("���������������������������:" + error + ":" + error.getStackTrace());
1507 }
1508
1509 }
1510
1511
1512 /**
1513 * ������������������������������������������������
1514 * @return
1515 *
1516 */
1517 public function stop():void
1518 {
1519 try{
1520
1521 pausing = false;
1522
1523 if(videoInfoView.isShowAlwaysNicowariArea){
1524 videoPlayer.showNicowariArea();
1525 }else{
1526 videoPlayer.hideNicowariArea();
1527 }
1528
1529 if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1530 videoPlayer.canvas_video_back.setFocus();
1531 videoPlayer.label_downloadStatus.text = "";
1532 videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1533 }
1534
1535 if(this.movieEndTimer != null){
1536 this.movieEndTimer.stop();
1537 this.movieEndTimer = null;
1538 }
1539
1540 if(renewDownloadManager != null){
1541 try{
1542 renewDownloadManager.close();
1543 renewDownloadManager = null;
1544 logManager.addLog("���������������������������������������������������������");
1545 }catch(error:Error){
1546 trace(error);
1547 }
1548 }else{
1549
1550 this.videoPlayer.videoController.button_play.enabled = true;
1551 this.videoPlayer.videoController_under.button_play.enabled = true;
1552 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1553 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1554
1555 this.videoPlayer.videoController_under.slider_timeline.value = 0;
1556 this.videoPlayer.videoController.slider_timeline.value = 0;
1557
1558 this.commentTimerVpos = 0;
1559 this.commentTimer.stop();
1560 this.commentTimer.reset();
1561 this.commentManager.removeAll();
1562
1563 //���������������������������������������������
1564 this.destructor();
1565
1566 //������������������������������������������������������
1567 videoPlayer.canvas_nicowari.removeAllChildren();
1568 if(nicowariMC != null){
1569 this.pauseByNicowari(true);
1570 }
1571
1572 }
1573
1574 }catch(error:Error){
1575 trace(error.getStackTrace());
1576 logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1577 }
1578
1579 }
1580
1581
1582 /**
1583 * ���������������������������������������������������������������������������������
1584 *
1585 */
1586 public function goToTop():void
1587 {
1588 try{
1589
1590 pausing = false;
1591
1592 if(videoInfoView.isShowAlwaysNicowariArea){
1593 videoPlayer.showNicowariArea();
1594 }else{
1595 videoPlayer.hideNicowariArea();
1596 }
1597
1598 if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1599 videoPlayer.canvas_video_back.setFocus();
1600 videoPlayer.label_downloadStatus.text = "";
1601 videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1602 }
1603
1604 if(this.movieEndTimer != null){
1605 this.movieEndTimer.stop();
1606 this.movieEndTimer = null;
1607 }
1608
1609 if(renewDownloadManager != null){
1610 try{
1611 renewDownloadManager.close();
1612 renewDownloadManager = null;
1613 logManager.addLog("���������������������������������������������������������");
1614 }catch(error:Error){
1615 trace(error);
1616 }
1617 }else{
1618
1619 this.videoPlayer.videoController.button_play.enabled = true;
1620 this.videoPlayer.videoController_under.button_play.enabled = true;
1621 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1622 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1623
1624 this.videoPlayer.videoController_under.slider_timeline.value = 0;
1625 this.videoPlayer.videoController.slider_timeline.value = 0;
1626
1627 this.commentTimerVpos = 0;
1628 this.commentTimer.stop();
1629 this.commentTimer.reset();
1630
1631 var playing:Boolean = false;
1632 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1633 if(videoDisplay != null && videoDisplay.playing){
1634 playing = true;
1635 }
1636 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1637 if(isMovieClipPlaying){
1638 playing = true;
1639 }
1640 }
1641
1642 if(playing){
1643 this.play();
1644 }
1645 this.seek(0);
1646
1647
1648 //������������������������������������������������������
1649 videoPlayer.canvas_nicowari.removeAllChildren();
1650 if(nicowariMC != null){
1651 this.pauseByNicowari(true);
1652 }
1653
1654 }
1655
1656 }catch(error:Error){
1657 trace(error.getStackTrace());
1658 logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1659 }
1660 }
1661
1662 /**
1663 * VideoDisplay���������������������������������������������������������
1664 * @param videoDisplay
1665 *
1666 */
1667 private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1668 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1669 videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1670 videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1671 }
1672
1673 /**
1674 * VideoDisplay���������������������������������������������������������
1675 * @param videoDisplay
1676 *
1677 */
1678 private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1679 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1680 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1681 }
1682 if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){
1683 videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1684 }
1685 if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){
1686 videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1687 }
1688 }
1689
1690 /**
1691 *
1692 * @param event
1693 *
1694 */
1695 private function durationChangeEventHandler(event:TimeEvent):void{
1696 if(videoInfoView.isResizePlayerEachPlay){
1697 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1698 }else{
1699 resizePlayerJustVideoSize();
1700 }
1701 }
1702
1703 /**
1704 *
1705 * @param loader
1706 *
1707 */
1708 // private function removeMovieClipEventHandlers(loader:Loader):void{
1709 // if(loader.hasEventListener(Event.COMPLETE)){
1710 // loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1711 // }
1712 // }
1713
1714 /**
1715 * ������������������������������������������������������������������������������
1716 * @return
1717 *
1718 */
1719 public function getStreamingProgress():int{
1720 var value:int = 0;
1721 if(isStreamingPlay){
1722 if(videoDisplay != null){
1723 value = (videoDisplay.bytesLoaded*100 / videoDisplay.bytesTotal);
1724 }else if(loader != null && loader.contentLoaderInfo != null){
1725 value = (loader.contentLoaderInfo.bytesLoaded*100 / loader.contentLoaderInfo.bytesTotal);
1726 }else{
1727 value = 100;
1728 }
1729 }else{
1730 value = 100;
1731 }
1732 return value;
1733 }
1734
1735
1736 /**
1737 * ���������������������������������������������������MB/s������������������
1738 * @return
1739 *
1740 */
1741 public function getStreamingSpeed():Number
1742 {
1743
1744 // timer������1000ms���������������������
1745
1746 var value:Number = 0;
1747 if (isStreamingPlay)
1748 {
1749 if(videoDisplay != null){
1750 value = videoDisplay.bytesLoaded - this.lastLoadedBytes;
1751 this.lastLoadedBytes = videoDisplay.bytesLoaded;
1752 }else if(loader != null && loader.contentLoaderInfo != null){
1753 value = loader.contentLoaderInfo.bytesLoaded - this.lastLoadedBytes;
1754 this.lastLoadedBytes = loader.contentLoaderInfo.bytesLoaded;
1755 }else{
1756 return value;
1757 }
1758
1759 trace(value);
1760
1761 //MB���������
1762 value = value / 1000000;
1763
1764 // MB/s���������
1765 value = value / 1;
1766 }
1767 else
1768 {
1769 // ���������������
1770 }
1771
1772 return value;
1773
1774 }
1775
1776 /**
1777 *
1778 * @return
1779 *
1780 */
1781 public function get bytesLoaded():Number{
1782
1783 var value:Number = 0.0;
1784
1785 if(videoDisplay != null){
1786 value = videoDisplay.bytesLoaded;
1787 }else if(loader != null && loader.contentLoaderInfo != null){
1788 value = loader.contentLoaderInfo.bytesLoaded;
1789 }
1790
1791 return value;
1792 }
1793
1794 /**
1795 *
1796 * @param event
1797 *
1798 */
1799 private function streamingProgressHandler(event:TimerEvent):void{
1800 if(isStreamingPlay){
1801 var value:int = getStreamingProgress();
1802 var speed:Number = getStreamingSpeed();
1803 if(value >= 100){
1804 this.videoPlayer.label_playSourceStatus.text = "Streaming:100%";
1805 videoPlayer.videoController.resetStatusAlpha();
1806 if(streamingProgressTimer != null){
1807 streamingProgressTimer.stop();
1808 }
1809
1810 // 100%���������������������������������������������������������������������������������������
1811 if(this.bytesLoaded <= 64){
1812
1813 var maxCount:int = 1;
1814 var confValue:String = ConfigManager.getInstance().getItem("streamingRetryMaxCount");
1815 if(confValue == null)
1816 {
1817 ConfigManager.getInstance().removeItem("streamingRetryMaxCount");
1818 ConfigManager.getInstance().setItem("streamingRetryMaxCount", maxCount);
1819 }
1820 else
1821 {
1822 maxCount = int(confValue);
1823 }
1824
1825 if(this.streamingRetryCount <= maxCount ){
1826 // ���������������
1827 this.streamingRetryCount++;
1828 var timeStr:String = String(int(10000*this.streamingRetryCount / 1000));
1829 stop();
1830 logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1831 videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + timeStr + "���������" + this.streamingRetryCount +"������ )";
1832
1833 if(nicoVideoAccessRetryTimer != null){
1834 nicoVideoAccessRetryTimer.stop();
1835 nicoVideoAccessRetryTimer = null;
1836 }
1837 nicoVideoAccessRetryTimer = new Timer(10000*this.streamingRetryCount, 1);
1838 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1839 (event.currentTarget as Timer).stop();
1840 play();
1841 });
1842 nicoVideoAccessRetryTimer.start();
1843
1844 }else{
1845 stop();
1846 logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1847 videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1848 }
1849 }else{
1850 // ������������������
1851 this.streamingRetryCount = 0;
1852 }
1853
1854 }else{
1855
1856 var formatter:NumberFormatter = new NumberFormatter();
1857 formatter.precision = 2;
1858 var str:String = formatter.format(speed) + "MB/s"
1859
1860 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
1861 }
1862 }else{
1863 if(streamingProgressTimer != null){
1864 streamingProgressTimer.stop();
1865 }
1866 }
1867 }
1868
1869 /**
1870 * ������������������������������������������������������
1871 * @param evt
1872 *
1873 */
1874 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
1875 try{
1876 var allSec:String="00",allMin:String="0";
1877 var nowSec:String="00",nowMin:String="0";
1878
1879 this.commentTimerVpos = event.time*1000;
1880
1881 nowSec = String(int(this.videoDisplay.currentTime%60));
1882 nowMin = String(int(this.videoDisplay.currentTime/60));
1883
1884 allSec = String(int(this.videoDisplay.duration%60));
1885 allMin = String(int(this.videoDisplay.duration/60));
1886
1887 if(nowSec.length == 1){
1888 nowSec = "0" + nowSec;
1889 }
1890 if(allSec.length == 1){
1891 allSec = "0" + allSec;
1892 }
1893
1894 videoPlayer.videoController_under.slider_timeline.enabled = true;
1895 videoPlayer.videoController_under.slider_timeline.minimum = 0;
1896 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1897 if(!this.sliderChanging){
1898
1899 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1900 this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1901 videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
1902
1903 }
1904 videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1905 videoPlayer.videoController_under.slider_timeline.enabled = true;
1906
1907 videoPlayer.videoController.slider_timeline.enabled = true;
1908 videoPlayer.videoController.slider_timeline.minimum = 0;
1909 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1910 if(!this.sliderChanging){
1911 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
1912 }
1913 videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1914 videoPlayer.videoController.slider_timeline.enabled = true;
1915 }catch(error:Error){
1916 VideoDisplay(event.currentTarget).stop();
1917 trace(error.getStackTrace());
1918 }
1919 }
1920
1921 /**
1922 * ������������������������������������������������������������������������
1923 * @param evt
1924 *
1925 */
1926 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
1927
1928 if(movieEndTimer != null){
1929 movieEndTimer.stop();
1930 movieEndTimer = null;
1931 }
1932 //���������������������������������������������������������
1933 movieEndTimer = new Timer(2000, 1);
1934 movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
1935 movieEndTimer.start();
1936
1937 }
1938
1939 /**
1940 *
1941 *
1942 */
1943 private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
1944 if (!isCounted)
1945 {
1946 //���������������������
1947 var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
1948 if (videoId != null)
1949 {
1950 addVideoPlayCount(videoId, true);
1951 }
1952 isCounted = true;
1953 }
1954
1955 logManager.addLog("***���������������***");
1956
1957 if (videoPlayer.isRepeat)
1958 {
1959
1960 /* ���������1��������������� */
1961
1962 if (isPlayListingPlay)
1963 {
1964 if(isStreamingPlay)
1965 {
1966 logManager.addLog("***���������������������(���������������������)***");
1967 this.seek(0);
1968 if (this.videoDisplay != null)
1969 {
1970 this.videoDisplay.play();
1971 }
1972 }
1973 else
1974 {
1975 logManager.addLog("***���������������������(������������)***");
1976 this.stop();
1977 playMovie(
1978 this.videoInfoView.getPlayListUrl(playingIndex),
1979 this.videoInfoView.playList,
1980 playingIndex,
1981 this.videoPlayer.title);
1982
1983 }
1984 }
1985 else if(isStreamingPlay)
1986 {
1987 logManager.addLog("***���������������������(���������������������)***");
1988 this.seek(0);
1989 if (this.videoDisplay != null)
1990 {
1991 this.videoDisplay.play();
1992 }
1993 }
1994 else
1995 {
1996 logManager.addLog("***���������������������(������������)***");
1997 this.stop();
1998 this.play();
1999 }
2000 }
2001 else
2002 {
2003
2004 /* ������������������������������ */
2005
2006 this.stop();
2007
2008 if (isPlayListingPlay)
2009 {
2010
2011 /* ��������������������������� */
2012
2013 logManager.addLog("***���������������(������������)***");
2014 var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2015 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2016 {
2017 /* ������������������������������������ */
2018 playingIndex = 0;
2019 if (this.videoPlayer.videoInfoView.isRepeatAll())
2020 {
2021 playMovie(
2022 this.videoInfoView.getPlayListUrl(playingIndex),
2023 this.videoInfoView.playList,
2024 playingIndex,
2025 PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2026 }
2027 }
2028 else
2029 {
2030 /* ������������������������������������ */
2031 playingIndex++;
2032 playMovie(
2033 this.videoInfoView.getPlayListUrl(playingIndex),
2034 this.videoInfoView.playList,
2035 playingIndex,
2036 PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2037 }
2038 }
2039 }
2040 }
2041
2042
2043 /**
2044 * SWF������������������������������������������������������������������
2045 *
2046 */
2047 private function movieClipCompleteHandler():void{
2048
2049 this.lastFrame = 0;
2050 this.lastNicowariFrame = 0;
2051
2052 if(movieEndTimer != null){
2053 movieEndTimer.stop();
2054 movieEndTimer = null;
2055 }
2056 //���������������������������������������������������������
2057 movieEndTimer = new Timer(2000, 1);
2058 movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2059 movieEndTimer.start();
2060
2061
2062 }
2063
2064 /**
2065 *
2066 *
2067 */
2068 private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2069 if(!isCounted){
2070 //���������������������
2071 var videoId:String = LibraryUtil.getVideoKey(this.source);
2072 if(videoId == null){
2073 //���������������������������������������������������������
2074 videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2075 }
2076 if(videoId != null){
2077 addVideoPlayCount(videoId, true);
2078 }
2079 isCounted = true;
2080 }
2081
2082 logManager.addLog("***���������������***");
2083 this.lastFrame = 0;
2084 this.lastNicowariFrame = 0;
2085
2086 if(videoPlayer.isRepeat){
2087 if(isPlayListingPlay){
2088 if(isStreamingPlay){
2089 logManager.addLog("***���������������������(���������������������)***");
2090 this.seek(0);
2091 }else{
2092 logManager.addLog("***���������������������(������������)***");
2093 this.stop();
2094 mc.gotoAndStop(0);
2095 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2096 playingIndex, this.videoPlayer.title);
2097 }
2098 }else if(isStreamingPlay){
2099 logManager.addLog("***���������������������(���������������������)***");
2100 this.seek(0);
2101 }else{
2102 logManager.addLog("***���������������������(������������)***");
2103 this.stop();
2104 mc.gotoAndStop(0);
2105 this.play();
2106 }
2107 }else{
2108 this.stop();
2109 mc.gotoAndStop(0);
2110 if(isPlayListingPlay){
2111 logManager.addLog("***���������������(������������)***");
2112 var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2113 if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2114 playingIndex = 0;
2115 if(this.videoPlayer.videoInfoView.isRepeatAll()){
2116 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2117 playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2118 }
2119 }else{
2120 playingIndex++;
2121 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2122 playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2123 }
2124 }
2125 }
2126
2127 isMovieClipStopping = false;
2128 }
2129
2130
2131 /**
2132 * ���������������������ID������������������������������������������������������������1���������������
2133 * @param videoId ���������������������������������������������������ID
2134 * @param isSave ���������������������������������������������������
2135 */
2136 private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2137 var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2138 if(nnddVideo != null){
2139 nnddVideo.playCount = nnddVideo.playCount + 1;
2140 libraryManager.update(nnddVideo, isSave);
2141 trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2142 }else{
2143 //���������������
2144 trace("������������������������������������:" + videoId);
2145 }
2146 }
2147
2148 /**
2149 * ���������������������������������������������
2150 * swf���������������SWF���������������������������������������������������
2151 *
2152 * @param event
2153 *
2154 */
2155 private function commentTimerHandler(event:TimerEvent):void{
2156
2157 if(isPlayerClosing){
2158 if(commentTimer != null){
2159 commentTimer.stop();
2160 commentTimer.reset();
2161 }
2162 return;
2163 }
2164
2165 // ���������������
2166 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2167
2168 var nowSec:String="00",nowMin:String="0";
2169 nowSec = String(int(commentTimerVpos/1000%60));
2170 nowMin = String(int(commentTimerVpos/1000/60));
2171 if(nowSec.length == 1){
2172 nowSec = "0" + nowSec;
2173 }
2174 var nowTime:String = nowMin + ":" + nowSec;
2175
2176 var allSec:String="00",allMin:String="0"
2177 if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2178 allSec = String(int(mc.totalFrames/swfFrameRate%60));
2179 allMin = String(int(mc.totalFrames/swfFrameRate/60));
2180 }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2181 allSec = String(int(videoDisplay.duration%60));
2182 allMin = String(int(videoDisplay.duration/60));
2183 }
2184 if(allSec.length == 1){
2185 allSec = "0" + allSec;
2186 }
2187 var allTime:String = allMin +":" + allSec;
2188
2189 if(!isCounted && commentTimerVpos > 10000){
2190 //���������������������
2191 var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2192 if(videoId != null){
2193 addVideoPlayCount(videoId, false);
2194 }
2195 isCounted = true;
2196 }
2197
2198 //SWF���������������������������������������������������������������������
2199 if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2200
2201 videoPlayer.videoController_under.slider_timeline.enabled = true;
2202 videoPlayer.videoController_under.slider_timeline.minimum = 0;
2203 videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2204
2205 videoPlayer.videoController.slider_timeline.enabled = true;
2206 videoPlayer.videoController.slider_timeline.minimum = 0;
2207 videoPlayer.videoController.slider_timeline.maximum = mc.totalFrames;
2208
2209 if(!this.sliderChanging){
2210 videoPlayer.videoController_under.slider_timeline.value = mc.currentFrame;
2211 videoPlayer.videoController.slider_timeline.value = mc.currentFrame;
2212 }
2213
2214 // trace(nowMin + "/" + nowSec);
2215
2216 videoPlayer.videoController_under.label_time.text = nowTime + "/"+ allTime;
2217 videoPlayer.videoController.label_time.text = nowTime + "/"+ allTime;
2218
2219 if(mc.currentFrame >= mc.totalFrames-1 || mc.currentFrame == this.lastFrame ){
2220 this.lastFrame = mc.currentFrame;
2221 //���������movieClip������������������������������������������������������
2222 if(!isMovieClipStopping){
2223 isMovieClipStopping = true;
2224 movieClipCompleteHandler();
2225 }
2226 return;
2227 }else{
2228 if(!isMovieClipStopping){
2229 this.lastFrame = mc.currentFrame;
2230 }
2231 }
2232 }
2233
2234 var tempTime:Number = (new Date).time;
2235
2236 //SWF������������������������������������������������������������������
2237 if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2238 this.commentTimerVpos += (tempTime - this.time);
2239 }
2240
2241 //���������������������
2242 var commentArray:Vector.<NNDDComment> = this.commentManager.setComment(commentTimerVpos, (tempTime - this.time)*3, this.videoPlayer.isShowComment);
2243 this.commentManager.moveComment(tempTime/1000 - this.time/1000, videoInfoView.showCommentSec);
2244 this.commentManager.removeComment(commentTimerVpos, videoInfoView.showCommentSec * 1000);
2245 this.time = tempTime;
2246
2247 //������������������������������������������������������
2248 if(videoPlayer.videoInfoView.checkbox_SyncComment.selected && videoPlayer.videoInfoView.visible
2249 // && (videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE
2250 // && videoInfoView.isActive)
2251 ){
2252
2253 var lastMin:String = commentManager.getComments().lastMin;
2254
2255 var tempNowTime:String = nowTime;
2256 if(lastMin.length == 3){
2257 //���������������3���������������:���������������������
2258 if(tempNowTime.length == 4){
2259 //���������������:������������4���
2260 tempNowTime = "00" + tempNowTime;
2261 }else if(tempNowTime.length == 5){
2262 //���������������:������������5���
2263 tempNowTime = "0" + tempNowTime;
2264 }
2265 }else if(lastMin.length == 2){
2266 //���������������2���������������:������������5������
2267 if(tempNowTime.length == 4){
2268 //���������������:������������4���
2269 tempNowTime = "0" + tempNowTime;
2270 }
2271
2272 }else if(lastMin.length == 1){
2273 //���������������1���������������:������������4������
2274
2275 }
2276
2277 if(tempNowTime.length > lastMin.length+3){
2278 tempNowTime = tempNowTime.substring(1);
2279 }
2280
2281
2282 var index:int = 0;
2283 if(commentArray.length > 0 && comments != null){
2284 var myComment:NNDDComment = commentArray[0];
2285 for each(var comment:NNDDComment in commentArray){
2286 if(comment.vpos > myComment.vpos){
2287 myComment = comment;
2288 }
2289 }
2290 index = comments.getCommentIndex(tempNowTime, myComment.text);
2291
2292 if(this.videoPlayer.videoInfoView.tabNavigator_comment.selectedIndex == 0){
2293
2294 if(this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition < index){
2295 index = index - (this.videoPlayer.videoInfoView.dataGrid_comment.rowCount) + 2;
2296 if(index > 0){
2297 if(index < this.videoPlayer.videoInfoView.dataGrid_comment.maxVerticalScrollPosition){
2298 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = index;
2299 }else{
2300 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = this.videoPlayer.videoInfoView.dataGrid_comment.maxVerticalScrollPosition;
2301 }
2302 }
2303 }
2304
2305 }else if(this.videoPlayer.videoInfoView.tabNavigator_comment.selectedIndex == 1){
2306
2307 if(this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition < index){
2308 index = index - (this.videoPlayer.videoInfoView.dataGrid_oldComment.rowCount) + 2;
2309 if(index > 0){
2310 if(index < this.videoPlayer.videoInfoView.dataGrid_oldComment.maxVerticalScrollPosition){
2311 this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition = index;
2312 }else{
2313 this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition = this.videoPlayer.videoInfoView.dataGrid_oldComment.maxVerticalScrollPosition;
2314 }
2315 }
2316 }
2317
2318 }
2319
2320 }
2321 }
2322
2323
2324 //������������������������
2325 var date:Date = new Date();
2326 var hh:String = new String(int(date.getHours()));
2327 var mm:String = new String(int(date.getMinutes()));
2328 if(hh.length == 1){
2329 hh = "0" + hh;
2330 }
2331 if(mm.length == 1){
2332 mm = "0" + mm;
2333 }
2334 var jihouResult:Array = commentManager.isJihouSettingTime(hh + mm);
2335 if(jihouResult != null && playingJihou == null){
2336 //������������
2337 playingJihou = hh+mm;
2338 playNicowari(jihouResult[0], jihouResult[1]);
2339 }
2340 if(playingJihou != null && playingJihou != (hh+mm)){
2341 playingJihou = null;
2342 }
2343
2344 if(!this.videoPlayer.isShowComment){
2345 this.commentManager.removeAll();
2346 }
2347
2348 }
2349
2350 /**
2351 * ������������������������������������������������������������������������
2352 * @param volume 0������1���������������������������������������������
2353 * @return ������������������������������������
2354 *
2355 */
2356 public function setVolume(volume:Number):Number{
2357 if(this.windowReady){
2358 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
2359 if(videoDisplay != null){
2360 videoDisplay.volume = volume;
2361 this.videoPlayer.videoController.slider_volume.value = volume;
2362 this.videoPlayer.videoController_under.slider_volume.value = volume;
2363 return videoDisplay.volume;
2364 }
2365 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2366 if(mc != null){
2367 var transForm:SoundTransform = new SoundTransform(volume, 0);
2368 mc.soundTransform = transForm;
2369 this.videoPlayer.videoController.slider_volume.value = volume;
2370 this.videoPlayer.videoController_under.slider_volume.value = volume;
2371 return mc.soundTransform.volume;
2372 }
2373 }
2374 }
2375 return 0;
2376 }
2377
2378 /**
2379 * PlayerController���������������CommentManager������������������
2380 * @return
2381 *
2382 */
2383 public function getCommentManager():CommentManager{
2384 return commentManager;
2385 }
2386
2387 /**
2388 * ���������������������������������������������������������������������������������������������������
2389 * ���������SWF������������������������������������������������������������������������Loader������������������������������������������������������
2390 */
2391 public function windowResized(isCommentRemove:Boolean):void{
2392
2393 if(this.windowReady){
2394
2395 //SWFLoader���������������������������������������
2396 if(swfLoader != null && this.windowType == PlayerController.WINDOW_TYPE_SWF){
2397 //������������������
2398
2399 (swfLoader.getChildAt(0) as Loader).x = 0;
2400 (swfLoader.getChildAt(0) as Loader).y = 0;
2401 var flashDistX:int = (swfLoader.getChildAt(0) as Loader).width - PlayerController.NICO_SWF_WIDTH;
2402 var flashDistY:int = (swfLoader.getChildAt(0) as Loader).height - PlayerController.NICO_SWF_HEIGHT;
2403 var scaleX:Number = swfLoader.width / ((swfLoader.getChildAt(0) as Loader).width - flashDistX);
2404 var scaleY:Number = swfLoader.height / ((swfLoader.getChildAt(0) as Loader).height - flashDistY);
2405 if(scaleX < scaleY){
2406 (swfLoader.getChildAt(0) as Loader).scaleX = scaleX;
2407 (swfLoader.getChildAt(0) as Loader).scaleY = scaleX;
2408 var centorY:int = swfLoader.height / 2;
2409 var newY:int = centorY - (PlayerController.NICO_SWF_HEIGHT*scaleX)/2;
2410 // trace("newY:"+newY);
2411 if(newY > 0){
2412 (swfLoader.getChildAt(0) as Loader).y = newY;
2413 }
2414 }else{
2415 (swfLoader.getChildAt(0) as Loader).scaleX = scaleY;
2416 (swfLoader.getChildAt(0) as Loader).scaleY = scaleY;
2417 var centorX:int = swfLoader.width / 2;
2418 var newX:int = centorX - (PlayerController.NICO_SWF_WIDTH*scaleY)/2;
2419 // trace("newX:"+newX);
2420 if(newX > 0){
2421 (swfLoader.getChildAt(0) as Loader).x = newX;
2422 }
2423 }
2424
2425 }
2426
2427 //���������SWF������������������������������������������
2428 if(nicowariSwfLoader != null){
2429
2430 (nicowariSwfLoader.getChildAt(0) as Loader).x = 0;
2431 (nicowariSwfLoader.getChildAt(0) as Loader).y = 0;
2432
2433 var nicowariDistX:Number = (nicowariSwfLoader.getChildAt(0) as Loader).width - PlayerController.NICO_WARI_WIDTH;
2434 var nicowariDistY:Number = (nicowariSwfLoader.getChildAt(0) as Loader).height - PlayerController.NICO_WARI_HEIGHT;
2435
2436 var nicowariScaleX:Number = nicowariSwfLoader.width / ((nicowariSwfLoader.getChildAt(0) as Loader).width - nicowariDistX);
2437 var nicowariScaleY:Number = nicowariSwfLoader.height / ((nicowariSwfLoader.getChildAt(0) as Loader).height - nicowariDistY);
2438 if(nicowariScaleX < nicowariScaleY){
2439 (nicowariSwfLoader.getChildAt(0) as Loader).scaleX = nicowariScaleX;
2440 (nicowariSwfLoader.getChildAt(0) as Loader).scaleY = nicowariScaleX;
2441 centorY = nicowariSwfLoader.height / 2;
2442 newY = centorY - (PlayerController.NICO_WARI_HEIGHT*nicowariScaleX)/2;
2443 // trace("newY:"+newY);
2444 if(newY > 0){
2445 (nicowariSwfLoader.getChildAt(0) as Loader).y = newY;
2446 }
2447 }else{
2448 (nicowariSwfLoader.getChildAt(0) as Loader).scaleX = nicowariScaleY;
2449 (nicowariSwfLoader.getChildAt(0) as Loader).scaleY = nicowariScaleY;
2450 centorX = nicowariSwfLoader.width / 2;
2451 newX = centorX - (PlayerController.NICO_WARI_WIDTH*nicowariScaleY)/2;
2452 // trace("newX:"+newX);
2453 if(newX > 0){
2454 (nicowariSwfLoader.getChildAt(0) as Loader).x = newX;
2455 }
2456 }
2457 }
2458
2459 if(isCommentRemove){
2460 // ���������������������������
2461 commentManager.removeAll();
2462 }else{
2463 // ���������������������������������
2464 commentManager.validateCommentPosition();
2465 }
2466
2467
2468
2469 }
2470 }
2471
2472 /**
2473 * ���������������seekTime������������������������������������������������
2474 * @param seekTime ������������������������������������������������������������������������������������������������������
2475 *
2476 */
2477 public function seek(seekTime:Number):void{
2478 trace(seekTime);
2479 if(this.windowReady){
2480 if((new Date().time)-lastSeekTime > 1000){
2481 if((videoDisplay != null && videoDisplay.initialized && videoDisplay.duration > 0)
2482 || (swfLoader != null && swfLoader.initialized)){
2483
2484
2485 trace("seekStart:" + seekTime);
2486 this.commentTimer.stop();
2487 this.commentTimer.reset();
2488
2489 //������������������������������������������������������
2490 commentManager.getComments().resetEnableShowFlag();
2491
2492 //���������������������������������������������
2493 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = 0;
2494
2495 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
2496 videoDisplay.seek(seekTime);
2497 commentTimerVpos = seekTime*1000;
2498 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2499 if(pausing){
2500 mc.gotoAndStop(int(seekTime));
2501 }
2502 else
2503 {
2504 mc.gotoAndPlay(int(seekTime));
2505 }
2506 commentTimerVpos = (seekTime/swfFrameRate)*1000;
2507 }
2508
2509 commentManager.removeAll();
2510
2511 if(!this.pausing){
2512 commentTimer.start();
2513 }
2514 lastSeekTime = new Date().time;
2515
2516
2517
2518 }
2519 }
2520 }
2521 }
2522
2523
2524 /**
2525 * ������Player������������������������������������������������
2526 * @return Player���������������������������true������������������������������false���
2527 *
2528 */
2529 public function isOpen():Boolean{
2530 if(this.videoPlayer.nativeWindow != null){
2531 return !this.videoPlayer.closed;
2532 }
2533 return false;
2534 }
2535
2536 /**
2537 * Player������������������Open������������
2538 *
2539 */
2540 public function open():Boolean{
2541 if(this.videoPlayer != null){
2542 this.videoPlayer.open();
2543 }else{
2544 return false;
2545 }
2546 if(this.videoInfoView != null){
2547 this.videoInfoView.open();
2548 }else{
2549 return false;
2550 }
2551 return true;
2552 }
2553
2554 /**
2555 * ���������������������Player������������������������������
2556 *
2557 */
2558 public function playerExit():void{
2559
2560 this.stop();
2561 if(this.videoPlayer != null && this.videoPlayer.nativeWindow != null && !this.videoPlayer.closed){
2562 this.videoPlayer.restore();
2563 // this.videoPlayer.saveStore();
2564 this.videoPlayer.close();
2565 }
2566 if(this.videoPlayer != null && this.videoInfoView.nativeWindow != null && !this.videoInfoView.closed){
2567 this.saveNgList();
2568 this.videoInfoView.restore();
2569 // this.videoInfoView.saveStore();
2570 this.videoInfoView.close();
2571 }
2572 }
2573
2574 /**
2575 * ���������������������ID������������������������������������
2576 * ���������������������������������������������(������������������������������������������������������������)���������������
2577 * ���������������������������������������������
2578 *
2579 * @param videoId
2580 *
2581 */
2582 public function reload(videoId:String):void
2583 {
2584
2585 stop();
2586
2587 var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2588
2589 if (isStreamingPlay || nnddVideo == null)
2590 {
2591 playMovie("http://www.nicovideo.jp/watch/" + videoId);
2592 }
2593 else
2594 {
2595 playMovie(nnddVideo.getDecodeUrl());
2596 }
2597
2598 }
2599
2600 /**
2601 * ���������NG���������������������������������
2602 *
2603 */
2604 public function saveNgList():void{
2605 this.ngListManager.saveNgList(LibraryManagerBuilder.instance.libraryManager.systemFileDir);
2606 }
2607
2608 public function getCommentListProvider():ArrayCollection{
2609 return this.videoPlayer.getCommentListProvider();
2610 }
2611
2612 public function getOwnerCommentListProvider():ArrayCollection{
2613 return this.videoPlayer.videoInfoView.ownerCommentProvider;
2614 }
2615
2616
2617 /**
2618 * ������������������NG���������������������������������������������������
2619 * @param date ������������������������������������
2620 */
2621 public function reloadLocalComment(date:Date = null):void{
2622
2623 if(date != null){
2624 trace(date.time);
2625 }
2626
2627 if(this.videoInfoView.ngListProvider != null){
2628
2629 var videoMin:int = 1;
2630 if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2631 videoMin = mc.totalFrames/swfFrameRate/60
2632 }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2633 videoMin = videoDisplay.duration/60;
2634 }
2635 ++videoMin;
2636
2637 if(!this.isStreamingPlay && this.source != null && this.source != "" ){
2638 comments = new Comments(
2639 PathMaker.createNomalCommentPathByVideoPath(source),
2640 PathMaker.createOwnerCommentPathByVideoPath(source),
2641 this.videoPlayer.getCommentListProvider(),
2642 this.videoPlayer.videoInfoView.ownerCommentProvider,
2643 this.ngListManager,
2644 this.videoInfoView.isShowOnlyPermissionComment,
2645 this.videoInfoView.isHideSekaShinComment,
2646 this.videoInfoView.showCommentCountPerMin * videoMin,
2647 this.videoInfoView.showOwnerCommentCountPerMin * videoMin,
2648 this.videoInfoView.isNgUpEnable, date);
2649 }else if(this.isStreamingPlay){
2650 comments = new Comments(
2651 PathMaker.createNomalCommentPathByVideoPath(LibraryManagerBuilder.instance.libraryManager.tempDir.url + "/nndd.flv"),
2652 PathMaker.createOwnerCommentPathByVideoPath(LibraryManagerBuilder.instance.libraryManager.tempDir.url + "/nndd.flv"),
2653 this.videoPlayer.getCommentListProvider(),
2654 this.videoPlayer.videoInfoView.ownerCommentProvider,
2655 this.ngListManager,
2656 this.videoInfoView.isShowOnlyPermissionComment,
2657 this.videoInfoView.isHideSekaShinComment,
2658 this.videoInfoView.showCommentCountPerMin * videoMin,
2659 this.videoInfoView.showOwnerCommentCountPerMin * videoMin,
2660 this.videoInfoView.isNgUpEnable, date);
2661 }
2662 commentManager.setComments(comments);
2663 }
2664
2665 this.windowResized(true);
2666
2667 }
2668
2669 /**
2670 * ���������������������������������������������������������������
2671 * @param videoPath
2672 *
2673 */
2674 private function setInfo(videoPath:String, thumbInfoPath:String, ichibaInfoPath:String, isStreaming:Boolean):void{
2675
2676 var videoID:String = PathMaker.getVideoID(videoPath);
2677
2678 if(!isStreaming){ //������������������������������������������������������������������������������������������������������������������������������
2679
2680 if(videoID != null && (UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != "") ){
2681
2682 //���������
2683 videoInfoView.ichibaNicoProvider.addItem({
2684 col_image:"",
2685 col_info:"������������������������������",
2686 col_link:""
2687 });
2688 videoPlayer.videoInfoView.owner_text_nico = "";
2689
2690 }else{
2691 videoInfoView.ichibaNicoProvider.addItem({
2692 col_image:"",
2693 col_info:"������������������������������������������������",
2694 col_link:""
2695 });
2696
2697 var thumbInfoAnalyzer:ThumbInfoAnalyzer = null;
2698
2699 if(videoPath != null){
2700
2701 var thumbInfoPath:String = PathMaker.createThmbInfoPathByVideoPath(videoPath);
2702
2703 var fileIO:FileIO = new FileIO(logManager);
2704 var xml:XML = fileIO.loadXMLSync(thumbInfoPath, false);
2705
2706 if(xml != null){
2707 thumbInfoAnalyzer = new ThumbInfoAnalyzer(xml);
2708 }
2709 }
2710
2711 if(thumbInfoAnalyzer != null){
2712
2713 var dateString:String = "(������������������������������)";
2714 var ownerText:String = "(������������������������������������)";
2715 var htmlInfo:String = "";
2716
2717 if(thumbInfoAnalyzer != null){
2718 var dateFormatter:DateFormatter = new DateFormatter();
2719 dateFormatter.formatString = "YYYY/MM/DD JJ:NN:SS";
2720 var date:Date = thumbInfoAnalyzer.getDateByFirst_retrieve();
2721 dateString = "���������:(������������������������)";
2722 if(date != null){
2723 dateString = "���������:" + dateFormatter.format(date);
2724 }
2725
2726 htmlInfo = thumbInfoAnalyzer.htmlTitle + "<br />" + dateString + "<br />" + thumbInfoAnalyzer.playCountAndCommentCountAndMyListCount;
2727
2728 ownerText = thumbInfoAnalyzer.thumbInfoHtml + "\n(���������������������������������)";
2729 }else{
2730
2731 if(videoPlayer.videoInfoView.owner_text_local.length > 1){
2732 ownerText = videoPlayer.videoInfoView.owner_text_local + "\n(���������������������������������)";
2733 }
2734
2735 htmlInfo = "(������������������������������)<br />" + dateString + "<br />(���������������������������������)";
2736 }
2737
2738 videoPlayer.videoInfoView.text_info.htmlText = htmlInfo;
2739
2740 if(videoPlayer.videoInfoView.checkbox_showHtml.selected){
2741 videoPlayer.videoInfoView.owner_text_temp = videoPlayer.videoInfoView.owner_text_nico;
2742 videoPlayer.videoInfoView.owner_text_nico = ownerText;
2743 }else{
2744 videoPlayer.videoInfoView.owner_text_temp = ownerText;
2745 }
2746
2747 videoPlayer.videoInfoView.nicoTagProvider = thumbInfoAnalyzer.tagArray;
2748 videoPlayer.videoInfoView.nicoTagProvider.push("(���������������������������������������������������������������)");
2749 videoPlayer.setTagArray(thumbInfoAnalyzer.tagStrings);
2750
2751 }else{
2752
2753 videoPlayer.videoInfoView.text_info.htmlText = "(������������������������������)<br />(������������������������������)<br />(���������������������������������)";
2754 videoPlayer.videoInfoView.owner_text_nico = "(������������������������������)";
2755
2756 videoPlayer.videoInfoView.nicoTagProvider = videoPlayer.videoInfoView.localTagProvider;
2757 videoPlayer.videoInfoView.nicoTagProvider.push("(���������������������������������������������������������������)");
2758
2759 var tagStrings:Vector.<PlayerTagString> = new Vector.<PlayerTagString>();
2760 for each(var string:String in videoPlayer.videoInfoView.nicoTagProvider)
2761 {
2762 var tagString:PlayerTagString = new PlayerTagString(string);
2763 tagStrings.push(tagString);
2764 }
2765 videoPlayer.setTagArray(tagStrings);
2766
2767 }
2768 }
2769 }
2770
2771 if(videoID != null && (UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != "") ){
2772 retryCount = 0;
2773 setNicoVideoPageInfo(PathMaker.getVideoID(videoID), 0, isStreaming); //���������������������������������������������������
2774 }
2775
2776 setNicoRelationInfo(videoID); //������������������������������������������������������������������������������
2777
2778 setLocalIchibaInfo(ichibaInfoPath, isStreaming);
2779 setLocalThumbInfo(videoID, thumbInfoPath, isStreaming);
2780
2781 }
2782
2783
2784
2785 //-------------------------------------------------------
2786
2787 /**
2788 * ������������������������������������
2789 *
2790 */
2791 public function setNicoRelationInfoForRelationSortTypeChange():void{
2792 var videoId:String = PathMaker.getVideoID(videoPlayer.title);
2793 if(videoId != null){
2794 setNicoRelationInfo(videoId);
2795 }
2796 }
2797
2798 /**
2799 * ������������������������������������������������������������������������
2800 * @param videoID
2801 *
2802 */
2803 private function setNicoRelationInfo(videoID:String):void{
2804
2805 (videoInfoView.relationDataProvider as ArrayCollection).removeAll();
2806
2807 if(videoInfoView == null){
2808 return;
2809 }
2810
2811 if(nicoRelationInfoLoader != null){
2812 try{
2813 nicoRelationInfoLoader.close();
2814 }catch(error:Error){
2815 }
2816 }
2817
2818 videoInfoView.setRelationComboboxEnable(false);
2819