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