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