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 786 - (show annotations) (download)
Sat Apr 7 13:43:13 2012 UTC (12 years ago) by mineap
File size: 163813 byte(s)
プレイリストをクリアした場合の動作を改善
1 package org.mineap.nndd.player
2 {
3 import flash.display.Loader;
4 import flash.display.LoaderInfo;
5 import flash.display.MovieClip;
6 import flash.display.NativeWindowType;
7 import flash.display.StageDisplayState;
8 import flash.display.StageQuality;
9 import flash.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
1986 var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
1987 var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
1988 if (video != null)
1989 {
1990 url = video.getDecodeUrl();
1991 }
1992
1993 playMovie(
1994 url,
1995 this.videoInfoView.playList,
1996 playingIndex,
1997 this.videoPlayer.title);
1998
1999 }
2000 }
2001 else if(isStreamingPlay)
2002 {
2003 logManager.addLog("***���������������������(���������������������)***");
2004 this.seek(0);
2005 if (this.videoDisplay != null)
2006 {
2007 this.videoDisplay.play();
2008 }
2009 }
2010 else
2011 {
2012 logManager.addLog("***���������������������(������������)***");
2013 this.stop();
2014 this.play();
2015 }
2016 }
2017 else
2018 {
2019
2020 /* ������������������������������ */
2021
2022 this.stop();
2023
2024 if (isPlayListingPlay)
2025 {
2026
2027 /* ��������������������������� */
2028
2029 logManager.addLog("***���������������(������������)***");
2030 var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2031 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2032 {
2033 /* ������������������������������������ */
2034 playingIndex = 0;
2035 if (this.videoPlayer.videoInfoView.isRepeatAll())
2036 {
2037 var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
2038 var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
2039 if (video != null)
2040 {
2041 url = video.getDecodeUrl();
2042 }
2043
2044 playMovie(
2045 url,
2046 this.videoInfoView.playList,
2047 playingIndex,
2048 PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2049 }
2050 }
2051 else
2052 {
2053 /* ������������������������������������ */
2054 playingIndex++;
2055
2056 var url:String = this.videoInfoView.getPlayListUrl(playingIndex);
2057 var video:NNDDVideo = libraryManager.isExistByVideoId(LibraryUtil.getVideoKey(url));
2058 if (video != null)
2059 {
2060 url = video.getDecodeUrl();
2061 }
2062
2063 playMovie(
2064 url,
2065 this.videoInfoView.playList,
2066 playingIndex,
2067 PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2068 }
2069 }
2070 }
2071 }
2072
2073
2074 /**
2075 * SWF������������������������������������������������������������������
2076 *
2077 */
2078 private function movieClipCompleteHandler():void{
2079
2080 this.lastFrame = 0;
2081 this.lastNicowariFrame = 0;
2082
2083 if(movieEndTimer != null){
2084 movieEndTimer.stop();
2085 movieEndTimer = null;
2086 }
2087 //���������������������������������������������������������
2088 movieEndTimer = new Timer(2000, 1);
2089 movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2090 movieEndTimer.start();
2091
2092
2093 }
2094
2095 /**
2096 *
2097 *
2098 */
2099 private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2100 if(!isCounted){
2101 //���������������������
2102 var videoId:String = LibraryUtil.getVideoKey(this.source);
2103 if(videoId == null){
2104 //���������������������������������������������������������
2105 videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2106 }
2107 if(videoId != null){
2108 addVideoPlayCount(videoId, true);
2109 }
2110 isCounted = true;
2111 }
2112
2113 logManager.addLog("***���������������***");
2114 this.lastFrame = 0;
2115 this.lastNicowariFrame = 0;
2116
2117 if(videoPlayer.isRepeat){
2118 if(isPlayListingPlay){
2119 if(isStreamingPlay){
2120 logManager.addLog("***���������������������(���������������������)***");
2121 this.seek(0);
2122 }else{
2123 logManager.addLog("***���������������������(������������)***");
2124 this.stop();
2125 mc.gotoAndStop(0);
2126 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2127 playingIndex, this.videoPlayer.title);
2128 }
2129 }else if(isStreamingPlay){
2130 logManager.addLog("***���������������������(���������������������)***");
2131 this.seek(0);
2132 }else{
2133 logManager.addLog("***���������������������(������������)***");
2134 this.stop();
2135 mc.gotoAndStop(0);
2136 this.play();
2137 }
2138 }else{
2139 this.stop();
2140 mc.gotoAndStop(0);
2141 if(isPlayListingPlay){
2142 logManager.addLog("***���������������(������������)***");
2143 var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2144 if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2145 playingIndex = 0;
2146 if(this.videoPlayer.videoInfoView.isRepeatAll()){
2147 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2148 playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2149 }
2150 }else{
2151 playingIndex++;
2152 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2153 playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2154 }
2155 }
2156 }
2157
2158 isMovieClipStopping = false;
2159 }
2160
2161
2162 /**
2163 * ���������������������ID������������������������������������������������������������1���������������
2164 * @param videoId ���������������������������������������������������ID
2165 * @param isSave ���������������������������������������������������
2166 */
2167 private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2168 var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2169 if(nnddVideo != null){
2170 nnddVideo.playCount = nnddVideo.playCount + 1;
2171 libraryManager.update(nnddVideo, isSave);
2172 trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2173 }else{
2174 //���������������
2175 trace("������������������������������������:" + videoId);
2176 }
2177 }
2178
2179 /**
2180 * ���������������������������������������������
2181 * swf���������������SWF���������������������������������������������������
2182 *
2183 * @param event
2184 *
2185 */
2186 private function commentTimerHandler(event:TimerEvent):void{
2187
2188 if(isPlayerClosing){
2189 if(commentTimer != null){
2190 commentTimer.stop();
2191 commentTimer.reset();
2192 }
2193 return;
2194 }
2195
2196 // ���������������
2197 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2198
2199 var nowSec:String="00",nowMin:String="0";
2200 nowSec = String(int(commentTimerVpos/1000%60));
2201 nowMin = String(int(commentTimerVpos/1000/60));
2202 if(nowSec.length == 1){
2203 nowSec = "0" + nowSec;
2204 }
2205 var nowTime:String = nowMin + ":" + nowSec;
2206
2207 var allSec:String="00",allMin:String="0"
2208 if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2209 allSec = String(int(mc.totalFrames/swfFrameRate%60));
2210 allMin = String(int(mc.totalFrames/swfFrameRate/60));
2211 }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2212 allSec = String(int(videoDisplay.duration%60));
2213 allMin = String(int(videoDisplay.duration/60));
2214 }
2215 if(allSec.length == 1){
2216 allSec = "0" + allSec;
2217 }
2218 var allTime:String = allMin +":" + allSec;
2219
2220 if(!isCounted && commentTimerVpos > 10000){
2221 //���������������������
2222 var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2223 if(videoId != null){
2224 addVideoPlayCount(videoId, false);
2225 }
2226 isCounted = true;
2227 }
2228
2229 //SWF���������������������������������������������������������������������
2230 if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2231
2232 videoPlayer.videoController_under.slider_timeline.enabled = true;
2233 videoPlayer.videoController_under.slider_timeline.minimum = 0;
2234 videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2235
2236 videoPlayer.videoController.slider_timeline.enabled = true;
2237 videoPlayer.videoController.slider_timeline.minimum = 0;
2238 videoPlayer.videoController.slider_timeline.maximum = mc.totalFrames;
2239
2240 if(!this.sliderChanging){
2241 videoPlayer.videoController_under.slider_timeline.value = mc.currentFrame;
2242 videoPlayer.videoController.slider_timeline.value = mc.currentFrame;
2243 }
2244
2245 // trace(nowMin + "/" + nowSec);
2246
2247 videoPlayer.videoController_under.label_time.text = nowTime + "/"+ allTime;
2248 videoPlayer.videoController.label_time.text = nowTime + "/"+ allTime;
2249
2250 if(mc.currentFrame >= mc.totalFrames-1 || mc.currentFrame == this.lastFrame ){
2251 this.lastFrame = mc.currentFrame;
2252 //���������movieClip������������������������������������������������������
2253 if(!isMovieClipStopping){
2254 isMovieClipStopping = true;
2255 movieClipCompleteHandler();
2256 }
2257 return;
2258 }else{
2259 if(!isMovieClipStopping){
2260 this.lastFrame = mc.currentFrame;
2261 }
2262 }
2263 }
2264
2265 var tempTime:Number = (new Date).time;
2266
2267 //SWF������������������������������������������������������������������
2268 if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2269 this.commentTimerVpos += (tempTime - this.time);
2270 }
2271
2272 //���������������������
2273 var commentArray:Vector.<NNDDComment> = this.commentManager.setComment(commentTimerVpos, (tempTime - this.time)*3, this.videoPlayer.isShowComment);
2274 this.commentManager.moveComment(tempTime/1000 - this.time/1000, videoInfoView.showCommentSec);
2275 this.commentManager.removeComment(commentTimerVpos, videoInfoView.showCommentSec * 1000);
2276 this.time = tempTime;
2277
2278 //������������������������������������������������������
2279 if(videoPlayer.videoInfoView.checkbox_SyncComment.selected && videoPlayer.videoInfoView.visible
2280 // && (videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE
2281 // && videoInfoView.isActive)
2282 ){
2283
2284 var lastMin:String = commentManager.getComments().lastMin;
2285
2286 var tempNowTime:String = nowTime;
2287 if(lastMin.length == 3){
2288 //���������������3���������������:���������������������
2289 if(tempNowTime.length == 4){
2290 //���������������:������������4���
2291 tempNowTime = "00" + tempNowTime;
2292 }else if(tempNowTime.length == 5){
2293 //���������������:������������5���
2294 tempNowTime = "0" + tempNowTime;
2295 }
2296 }else if(lastMin.length == 2){
2297 //���������������2���������������:������������5������
2298 if(tempNowTime.length == 4){
2299 //���������������:������������4���
2300 tempNowTime = "0" + tempNowTime;
2301 }
2302
2303 }else if(lastMin.length == 1){
2304 //���������������1���������������:������������4������
2305
2306 }
2307
2308 if(tempNowTime.length > lastMin.length+3){
2309 tempNowTime = tempNowTime.substring(1);
2310 }
2311
2312
2313 var index:int = 0;
2314 if(commentArray.length > 0 && comments != null){
2315 var myComment:NNDDComment = commentArray[0];
2316 for each(var comment:NNDDComment in commentArray){
2317 if(comment.vpos > myComment.vpos){
2318 myComment = comment;
2319 }
2320 }
2321 index = comments.getCommentIndex(tempNowTime, myComment.text);
2322
2323 if(this.videoPlayer.videoInfoView.tabNavigator_comment.selectedIndex == 0){
2324
2325 if(this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition < index){
2326 index = index - (this.videoPlayer.videoInfoView.dataGrid_comment.rowCount) + 2;
2327 if(index > 0){
2328 if(index < this.videoPlayer.videoInfoView.dataGrid_comment.maxVerticalScrollPosition){
2329 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = index;
2330 }else{
2331 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = this.videoPlayer.videoInfoView.dataGrid_comment.maxVerticalScrollPosition;
2332 }
2333 }
2334 }
2335
2336 }else if(this.videoPlayer.videoInfoView.tabNavigator_comment.selectedIndex == 1){
2337
2338 if(this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition < index){
2339 index = index - (this.videoPlayer.videoInfoView.dataGrid_oldComment.rowCount) + 2;
2340 if(index > 0){
2341 if(index < this.videoPlayer.videoInfoView.dataGrid_oldComment.maxVerticalScrollPosition){
2342 this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition = index;
2343 }else{
2344 this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition = this.videoPlayer.videoInfoView.dataGrid_oldComment.maxVerticalScrollPosition;
2345 }
2346 }
2347 }
2348
2349 }
2350
2351 }
2352 }
2353
2354
2355 //������������������������
2356 var date:Date = new Date();
2357 var hh:String = new String(int(date.getHours()));
2358 var mm:String = new String(int(date.getMinutes()));
2359 if(hh.length == 1){
2360 hh = "0" + hh;
2361 }
2362 if(mm.length == 1){
2363 mm = "0" + mm;
2364 }
2365 var jihouResult:Array = commentManager.isJihouSettingTime(hh + mm);
2366 if(jihouResult != null && playingJihou == null){
2367 //������������
2368 playingJihou = hh+mm;
2369 playNicowari(jihouResult[0], jihouResult[1]);
2370 }
2371 if(playingJihou != null && playingJihou != (hh+mm)){
2372 playingJihou = null;
2373 }
2374
2375 if(!this.videoPlayer.isShowComment){
2376 this.commentManager.removeAll();
2377 }
2378
2379 }
2380
2381 /**
2382 * ������������������������������������������������������������������������
2383 * @param volume 0������1���������������������������������������������
2384 * @return ������������������������������������
2385 *
2386 */
2387 public function setVolume(volume:Number):Number{
2388 if(this.windowReady){
2389 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
2390 if(videoDisplay != null){
2391 videoDisplay.volume = volume;
2392 this.videoPlayer.videoController.slider_volume.value = volume;
2393 this.videoPlayer.videoController_under.slider_volume.value = volume;
2394 return videoDisplay.volume;
2395 }
2396 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2397 if(mc != null){
2398 var transForm:SoundTransform = new SoundTransform(volume, 0);
2399 mc.soundTransform = transForm;
2400 this.videoPlayer.videoController.slider_volume.value = volume;
2401 this.videoPlayer.videoController_under.slider_volume.value = volume;
2402 return mc.soundTransform.volume;
2403 }
2404 }
2405 }
2406 return 0;
2407 }
2408
2409 /**
2410 * PlayerController���������������CommentManager������������������
2411 * @return
2412 *
2413 */
2414 public function getCommentManager():CommentManager{
2415 return commentManager;
2416 }
2417
2418 /**
2419 * ���������������������������������������������������������������������������������������������������
2420 * ���������SWF������������������������������������������������������������������������Loader������������������������������������������������������
2421 */
2422 public function windowResized(isCommentRemove:Boolean):void{
2423
2424 if(this.windowReady){
2425
2426 //SWFLoader���������������������������������������
2427 if(swfLoader != null && this.windowType == PlayerController.WINDOW_TYPE_SWF){
2428 //������������������
2429
2430 (swfLoader.getChildAt(0) as Loader).x = 0;
2431 (swfLoader.getChildAt(0) as Loader).y = 0;
2432 var flashDistX:int = (swfLoader.getChildAt(0) as Loader).width - PlayerController.NICO_SWF_WIDTH;
2433 var flashDistY:int = (swfLoader.getChildAt(0) as Loader).height - PlayerController.NICO_SWF_HEIGHT;
2434 var scaleX:Number = swfLoader.width / ((swfLoader.getChildAt(0) as Loader).width - flashDistX);
2435 var scaleY:Number = swfLoader.height / ((swfLoader.getChildAt(0) as Loader).height - flashDistY);
2436 if(scaleX < scaleY){
2437 (swfLoader.getChildAt(0) as Loader).scaleX = scaleX;
2438 (swfLoader.getChildAt(0) as Loader).scaleY = scaleX;
2439 var centorY:int = swfLoader.height / 2;
2440 var newY:int = centorY - (PlayerController.NICO_SWF_HEIGHT*scaleX)/2;
2441 // trace("newY:"+newY);
2442 if(newY > 0){
2443 (swfLoader.getChildAt(0) as Loader).y = newY;
2444 }
2445 }else{
2446 (swfLoader.getChildAt(0) as Loader).scaleX = scaleY;
2447 (swfLoader.getChildAt(0) as Loader).scaleY = scaleY;
2448 var centorX:int = swfLoader.width / 2;
2449 var newX:int = centorX - (PlayerController.NICO_SWF_WIDTH*scaleY)/2;
2450 // trace("newX:"+newX);
2451 if(newX > 0){
2452 (swfLoader.getChildAt(0) as Loader).x = newX;
2453 }
2454 }
2455
2456 }
2457
2458 //���������SWF������������������������������������������
2459 if(nicowariSwfLoader != null){
2460
2461 (nicowariSwfLoader.getChildAt(0) as Loader).x = 0;
2462 (nicowariSwfLoader.getChildAt(0) as Loader).y = 0;
2463
2464 var nicowariDistX:Number = (nicowariSwfLoader.getChildAt(0) as Loader).width - PlayerController.NICO_WARI_WIDTH;
2465 var nicowariDistY:Number = (nicowariSwfLoader.getChildAt(0) as Loader).height - PlayerController.NICO_WARI_HEIGHT;
2466
2467 var nicowariScaleX:Number = nicowariSwfLoader.width / ((nicowariSwfLoader.getChildAt(0) as Loader).width - nicowariDistX);
2468 var nicowariScaleY:Number = nicowariSwfLoader.height / ((nicowariSwfLoader.getChildAt(0) as Loader).height - nicowariDistY);
2469 if(nicowariScaleX < nicowariScaleY){
2470 (nicowariSwfLoader.getChildAt(0) as Loader).scaleX = nicowariScaleX;
2471 (nicowariSwfLoader.getChildAt(0) as Loader).scaleY = nicowariScaleX;
2472 centorY = nicowariSwfLoader.height / 2;
2473 newY = centorY - (PlayerController.NICO_WARI_HEIGHT*nicowariScaleX)/2;
2474 // trace("newY:"+newY);
2475 if(newY > 0){
2476 (nicowariSwfLoader.getChildAt(0) as Loader).y = newY;
2477 }
2478 }else{
2479 (nicowariSwfLoader.getChildAt(0) as Loader).scaleX = nicowariScaleY;
2480 (nicowariSwfLoader.getChildAt(0) as Loader).scaleY = nicowariScaleY;
2481 centorX = nicowariSwfLoader.width / 2;
2482 newX = centorX - (PlayerController.NICO_WARI_WIDTH*nicowariScaleY)/2;
2483 // trace("newX:"+newX);
2484 if(newX > 0){
2485 (nicowariSwfLoader.getChildAt(0) as Loader).x = newX;
2486 }
2487 }
2488 }
2489
2490 if(isCommentRemove){
2491 // ���������������������������
2492 commentManager.removeAll();
2493 }else{
2494 // ���������������������������������
2495 commentManager.validateCommentPosition();
2496 }
2497
2498
2499
2500 }
2501 }
2502
2503 /**
2504 * ���������������seekTime������������������������������������������������
2505 * @param seekTime ������������������������������������������������������������������������������������������������������
2506 *
2507 */
2508 public function seek(seekTime:Number):void{
2509 trace(seekTime);
2510 if(this.windowReady){
2511 if((new Date().time)-lastSeekTime > 1000){
2512 if((videoDisplay != null && videoDisplay.initialized && videoDisplay.duration > 0)
2513 || (swfLoader != null && swfLoader.initialized)){
2514
2515
2516 trace("seekStart:" + seekTime);
2517 this.commentTimer.stop();
2518 this.commentTimer.reset();
2519
2520 //������������������������������������������������������
2521 commentManager.getComments().resetEnableShowFlag();
2522
2523 //���������������������������������������������
2524 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = 0;
2525
2526 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
2527 videoDisplay.seek(seekTime);
2528 commentTimerVpos = seekTime*1000;
2529 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2530 if(pausing){
2531 mc.gotoAndStop(int(seekTime));
2532 }
2533 else
2534 {
2535 mc.gotoAndPlay(int(seekTime));
2536 }
2537 commentTimerVpos = (seekTime/swfFrameRate)*1000;
2538 }
2539
2540 commentManager.removeAll();
2541
2542 if(!this.pausing){
2543 commentTimer.start();
2544 }
2545 lastSeekTime = new Date().time;
2546
2547
2548
2549 }
2550 }
2551 }
2552 }
2553
2554
2555 /**
2556 * ������Player������������������������������������������������
2557 * @return Player���������������������������true������������������������������false���
2558 *
2559 */
2560 public function isOpen():Boolean{
2561 if(this.videoPlayer.nativeWindow != null){
2562 return !this.videoPlayer.closed;
2563 }
2564 return false;
2565 }
2566
2567 /**
2568 * Player������������������Open������������
2569 *
2570 */
2571 public function open():Boolean{
2572 if(this.videoPlayer != null){
2573 this.videoPlayer.open();
2574 }else{
2575 return false;
2576 }
2577 if(this.videoInfoView != null){
2578 this.videoInfoView.open();
2579 }else{
2580 return false;
2581 }
2582 return true;
2583 }
2584
2585 /**
2586 * ���������������������Player������������������������������
2587 *
2588 */
2589 public function playerExit():void{
2590
2591 this.stop();
2592 if(this.videoPlayer != null && this.videoPlayer.nativeWindow != null && !this.videoPlayer.closed){
2593 this.videoPlayer.restore();
2594 // this.videoPlayer.saveStore();
2595 this.videoPlayer.close();
2596 }
2597 if(this.videoPlayer != null && this.videoInfoView.nativeWindow != null && !this.videoInfoView.closed){
2598 this.saveNgList();
2599 this.videoInfoView.restore();
2600 // this.videoInfoView.saveStore();
2601 this.videoInfoView.close();
2602 }
2603 }
2604
2605 /**
2606 * ���������������������ID������������������������������������
2607 * ���������������������������������������������(������������������������������������������������������������)���������������
2608 * ���������������������������������������������
2609 *
2610 * @param videoId
2611 *
2612 */
2613 public function reload(videoId:String):void
2614 {
2615
2616 stop();
2617
2618 var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2619
2620 if (isStreamingPlay || nnddVideo == null)
2621 {
2622 playMovie("http://www.nicovideo.jp/watch/" + videoId);
2623 }
2624 else
2625 {
2626 playMovie(nnddVideo.getDecodeUrl());
2627 }
2628
2629 }
2630
2631 /**
2632 * ���������NG���������������������������������
2633 *
2634 */
2635 public function saveNgList():void{
2636 this.ngListManager.saveNgList(LibraryManagerBuilder.instance.libraryManager.systemFileDir);
2637 }
2638
2639 public function getCommentListProvider():ArrayCollection{
2640 return this.videoPlayer.getCommentListProvider();
2641 }
2642
2643 public function getOwnerCommentListProvider():ArrayCollection{
2644 return this.videoPlayer.videoInfoView.ownerCommentProvider;
2645 }
2646
2647
2648 /**
2649 * ������������������NG���������������������������������������������������
2650 * @param date ������������������������������������
2651 */
2652 public function reloadLocalComment(date:Date = null):void{
2653
2654 if(date != null){
2655 trace(date.time);
2656 }
2657
2658 if(this.videoInfoView.ngListProvider != null){
2659
2660 var videoMin:int = 1;
2661 if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2662 videoMin = mc.totalFrames/swfFrameRate/60
2663 }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2664 videoMin = videoDisplay.duration/60;
2665 }
2666 ++videoMin;
2667
2668 if(!this.isStreamingPlay && this.source != null && this.source != "" ){
2669 comments = new Comments(
2670 PathMaker.createNomalCommentPathByVideoPath(source),
2671 PathMaker.createOwnerCommentPathByVideoPath(source),
2672 this.videoPlayer.getCommentListProvider(),
2673 this.videoPlayer.videoInfoView.ownerCommentProvider,
2674 this.ngListManager,
2675 this.videoInfoView.isShowOnlyPermissionComment,
2676 this.videoInfoView.isHideSekaShinComment,
2677 this.videoInfoView.showCommentCountPerMin * videoMin,
2678 this.videoInfoView.showOwnerCommentCountPerMin * videoMin,
2679 this.videoInfoView.isNgUpEnable, date);
2680 }else if(this.isStreamingPlay){
2681 comments = new Comments(
2682 PathMaker.createNomalCommentPathByVideoPath(LibraryManagerBuilder.instance.libraryManager.tempDir.url + "/nndd.flv"),
2683 PathMaker.createOwnerCommentPathByVideoPath(LibraryManagerBuilder.instance.libraryManager.tempDir.url + "/nndd.flv"),
2684 this.videoPlayer.getCommentListProvider(),
2685 this.videoPlayer.videoInfoView.ownerCommentProvider,
2686 this.ngListManager,
2687 this.videoInfoView.isShowOnlyPermissionComment,
2688 this.videoInfoView.isHideSekaShinComment,
2689 this.videoInfoView.showCommentCountPerMin * videoMin,
2690 this.videoInfoView.showOwnerCommentCountPerMin * videoMin,
2691 this.videoInfoView.isNgUpEnable, date);
2692 }
2693 commentManager.setComments(comments);
2694 }
2695
2696 this.windowResized(true);
2697
2698 }
2699
2700 /**
2701 * ���������������������������������������������������������������
2702 * @param videoPath
2703 *
2704 */
2705 private function setInfo(videoPath:String, thumbInfoPath:String, ichibaInfoPath:String, isStreaming:Boolean):void{
2706
2707 var videoID:String = PathMaker.getVideoID(videoPath);
2708
2709 if(!isStreaming){ //������������������������������������������������������������������������������������������������������������������������������
2710
2711 if(videoID != null && (UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != "") ){
2712
2713 //���������
2714 videoInfoView.ichibaNicoProvider.addItem({
2715 col_image:"",
2716 col_info:"������������������������������",
2717 col_link:""
2718 });
2719 videoPlayer.videoInfoView.owner_text_nico = "";
2720
2721 }else{
2722 videoInfoView.ichibaNicoProvider.addItem({
2723 col_image:"",
2724 col_info:"������������������������������������������������",
2725 col_link:""
2726 });
2727
2728 var thumbInfoAnalyzer:ThumbInfoAnalyzer = null;
2729
2730 if(videoPath != null){
2731
2732 var thumbInfoPath:String = PathMaker.createThmbInfoPathByVideoPath(videoPath);
2733
2734 var fileIO:FileIO = new FileIO(logManager);
2735 var xml:XML = fileIO.loadXMLSync(thumbInfoPath, false);
2736
2737 if(xml != null){
2738 thumbInfoAnalyzer = new ThumbInfoAnalyzer(xml);
2739 }
2740 }
2741
2742 if(thumbInfoAnalyzer != null){
2743
2744 var dateString:String = "(������������������������������)";
2745 var ownerText:String = "(������������������������������������)";
2746 var htmlInfo:String = "";
2747
2748 if(thumbInfoAnalyzer != null){
2749 var dateFormatter:DateFormatter = new DateFormatter();
2750 dateFormatter.formatString = "YYYY/MM/DD JJ:NN:SS";
2751 var date:Date = thumbInfoAnalyzer.getDateByFirst_retrieve();
2752 dateString = "���������:(������������������������)";
2753 if(date != null){
2754 dateString = "���������:" + dateFormatter.format(date);
2755 }
2756
2757 htmlInfo = thumbInfoAnalyzer.htmlTitle + "<br />" + dateString + "<br />" + thumbInfoAnalyzer.playCountAndCommentCountAndMyListCount;
2758
2759 ownerText = thumbInfoAnalyzer.thumbInfoHtml + "\n(���������������������������������)";
2760 }else{
2761
2762 if(videoPlayer.videoInfoView.owner_text_local.length > 1){
2763 ownerText = videoPlayer.videoInfoView.owner_text_local + "\n(���������������������������������)";
2764 }
2765
2766 htmlInfo = "(������������������������������)<br />" + dateString + "<br />(���������������������������������)";
2767 }
2768
2769 videoPlayer.videoInfoView.text_info.htmlText = htmlInfo;
2770
2771 if(videoPlayer.videoInfoView.checkbox_showHtml.selected){
2772 videoPlayer.videoInfoView.owner_text_temp = videoPlayer.videoInfoView.owner_text_nico;
2773 videoPlayer.videoInfoView.owner_text_nico = ownerText;
2774 }else{
2775 videoPlayer.videoInfoView.owner_text_temp = ownerText;
2776 }
2777
2778 videoPlayer.videoInfoView.nicoTagProvider = thumbInfoAnalyzer.tagArray;
2779 videoPlayer.videoInfoView.nicoTagProvider.push("(���������������������������������������������������������������)");
2780 videoPlayer.setTagArray(thumbInfoAnalyzer.tagStrings);
2781
2782 }else{
2783
2784 videoPlayer.videoInfoView.text_info.htmlText = "(������������������������������)<br />(������������������������������)<br />(���������������������������������)";
2785 videoPlayer.videoInfoView.owner_text_nico = "(������������������������������)";
2786
2787 videoPlayer.videoInfoView.nicoTagProvider = videoPlayer.videoInfoView.localTagProvider;
2788 videoPlayer.videoInfoView.nicoTagProvider.push("(���������������������������������������������������������������)");
2789
2790 var tagStrings:Vector.<PlayerTagString> = new Vector.<PlayerTagString>();
2791 for each(var string:String in videoPlayer.videoInfoView.nicoTagProvider)
2792 {
2793 var tagString:PlayerTagString = new PlayerTagString(string);
2794 tagStrings.push(tagString);
2795 }
2796 videoPlayer.setTagArray(tagStrings);
2797
2798 }
2799 }
2800 }
2801
2802 if(videoID != null && (UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance