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