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