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