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