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