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 569 - (show annotations) (download)
Fri May 20 12:21:17 2011 UTC (12 years, 10 months ago) by mineap
File size: 154618 byte(s)
フルスクリーンで次の動画に遷移した時にスムージングが無効になる不具合を修正
1 package org.mineap.nndd.player
2 {
3 import flash.display.Loader;
4 import flash.display.LoaderInfo;
5 import flash.display.MovieClip;
6 import flash.display.NativeWindowType;
7 import flash.display.StageDisplayState;
8 import flash.display.StageQuality;
9 import flash.events.ErrorEvent;
10 import flash.events.Event;
11 import flash.events.EventDispatcher;
12 import flash.events.HTTPStatusEvent;
13 import flash.events.IOErrorEvent;
14 import flash.events.MouseEvent;
15 import flash.events.TimerEvent;
16 import flash.filesystem.File;
17 import flash.media.SoundMixer;
18 import flash.media.SoundTransform;
19 import flash.net.URLRequest;
20 import flash.utils.Timer;
21
22 import mx.collections.ArrayCollection;
23 import mx.controls.Alert;
24 import mx.controls.DataGrid;
25 import mx.controls.SWFLoader;
26 import mx.controls.Text;
27 import mx.controls.videoClasses.VideoError;
28 import mx.core.FlexGlobals;
29 import mx.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 else
1413 {
1414 if (PlayerController.WINDOW_TYPE_FLV == this.windowType)
1415 {
1416 if (videoInfoView != null)
1417 {
1418 this.setVideoSmoothing(videoInfoView.isSmoothing);
1419 }
1420 }
1421 }
1422
1423 }catch(error:Error){ //������������������������������������������������������������������������������������������
1424 trace(error.getStackTrace());
1425 logManager.addLog("������������������������������������������:" + error + ", " + error.getStackTrace());
1426 stop();
1427 destructor();
1428 }
1429 }
1430
1431
1432 /**
1433 * ������������������������������������������������������������������
1434 * ���������������������������������������������������������������������������������������������
1435 * @return
1436 *
1437 */
1438 public function play():void
1439 {
1440 try{
1441 videoPlayer.canvas_video_back.setFocus();
1442
1443 var newComments:Comments = null;
1444 videoPlayer.canvas_video.toolTip = null;
1445 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1446 if(videoDisplay != null && videoDisplay.playing){
1447 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1448 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1449 this.commentTimer.stop();
1450 this.commentTimer.reset();
1451 videoDisplay.pause();
1452 pausing = true;
1453 }else{
1454 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1455 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1456 if(pausing){
1457 this.videoPlayer.videoController.slider_timeline.enabled = true;
1458 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1459 this.videoDisplay.play();
1460 this.time = (new Date).time;
1461 this.commentTimer.start();
1462 }else{
1463 this.videoPlayer.videoController.slider_timeline.enabled = true;
1464 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1465 this.playMovie(source, null, -1, this.downLoadedURL);
1466 }
1467 pausing = false;
1468 }
1469 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1470 if(isMovieClipPlaying){
1471 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1472 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1473 this.commentTimer.stop();
1474 this.commentTimer.reset();
1475 mc.stop();
1476 isMovieClipPlaying = false;
1477 pausing = true;
1478 }else{
1479 videoPlayer.videoController.button_play.setStyle("icon", icon_Pause);
1480 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Pause);
1481 if(pausing){
1482 this.videoPlayer.videoController.slider_timeline.enabled = true;
1483 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1484 mc.play();
1485 isMovieClipPlaying = true;
1486 this.time = (new Date).time;
1487 this.commentTimer.start();
1488 }else{
1489 this.videoPlayer.canvas_video.removeAllChildren();
1490 this.videoPlayer.videoController.slider_timeline.enabled = true;
1491 this.videoPlayer.videoController_under.slider_timeline.enabled = true;
1492 this.playMovie(source, null, -1, this.downLoadedURL);
1493
1494 }
1495 pausing = false;
1496 }
1497 }else{
1498 if(this.videoPlayer != null && this.videoPlayer.title != null){
1499 this.playMovie(this.videoPlayer.title);
1500 }
1501 }
1502
1503 }catch(error:Error){
1504 trace(error.getStackTrace());
1505 logManager.addLog("���������������������������:" + error + ":" + error.getStackTrace());
1506 }
1507
1508 }
1509
1510
1511 /**
1512 * ������������������������������������������������
1513 * @return
1514 *
1515 */
1516 public function stop():void
1517 {
1518 try{
1519
1520 pausing = false;
1521
1522 if(videoInfoView.isShowAlwaysNicowariArea){
1523 videoPlayer.showNicowariArea();
1524 }else{
1525 videoPlayer.hideNicowariArea();
1526 }
1527
1528 if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1529 videoPlayer.canvas_video_back.setFocus();
1530 videoPlayer.label_downloadStatus.text = "";
1531 videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1532 }
1533
1534 if(this.movieEndTimer != null){
1535 this.movieEndTimer.stop();
1536 this.movieEndTimer = null;
1537 }
1538
1539 if(renewDownloadManager != null){
1540 try{
1541 renewDownloadManager.close();
1542 renewDownloadManager = null;
1543 logManager.addLog("���������������������������������������������������������");
1544 }catch(error:Error){
1545 trace(error);
1546 }
1547 }else{
1548
1549 this.videoPlayer.videoController.button_play.enabled = true;
1550 this.videoPlayer.videoController_under.button_play.enabled = true;
1551 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1552 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1553
1554 this.videoPlayer.videoController_under.slider_timeline.value = 0;
1555 this.videoPlayer.videoController.slider_timeline.value = 0;
1556
1557 this.commentTimerVpos = 0;
1558 this.commentTimer.stop();
1559 this.commentTimer.reset();
1560 this.commentManager.removeAll();
1561
1562 //���������������������������������������������
1563 this.destructor();
1564
1565 //������������������������������������������������������
1566 videoPlayer.canvas_nicowari.removeAllChildren();
1567 if(nicowariMC != null){
1568 this.pauseByNicowari(true);
1569 }
1570
1571 }
1572
1573 }catch(error:Error){
1574 trace(error.getStackTrace());
1575 logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1576 }
1577
1578 }
1579
1580
1581 /**
1582 * ���������������������������������������������������������������������������������
1583 *
1584 */
1585 public function goToTop():void
1586 {
1587 try{
1588
1589 pausing = false;
1590
1591 if(videoInfoView.isShowAlwaysNicowariArea){
1592 videoPlayer.showNicowariArea();
1593 }else{
1594 videoPlayer.hideNicowariArea();
1595 }
1596
1597 if(videoPlayer != null && videoPlayer.label_downloadStatus != null){
1598 videoPlayer.canvas_video_back.setFocus();
1599 videoPlayer.label_downloadStatus.text = "";
1600 videoPlayer.canvas_video.toolTip = "���������������������������������������������������������������������������������";
1601 }
1602
1603 if(this.movieEndTimer != null){
1604 this.movieEndTimer.stop();
1605 this.movieEndTimer = null;
1606 }
1607
1608 if(renewDownloadManager != null){
1609 try{
1610 renewDownloadManager.close();
1611 renewDownloadManager = null;
1612 logManager.addLog("���������������������������������������������������������");
1613 }catch(error:Error){
1614 trace(error);
1615 }
1616 }else{
1617
1618 this.videoPlayer.videoController.button_play.enabled = true;
1619 this.videoPlayer.videoController_under.button_play.enabled = true;
1620 videoPlayer.videoController.button_play.setStyle("icon", icon_Play);
1621 videoPlayer.videoController_under.button_play.setStyle("icon", icon_Play);
1622
1623 this.videoPlayer.videoController_under.slider_timeline.value = 0;
1624 this.videoPlayer.videoController.slider_timeline.value = 0;
1625
1626 this.commentTimerVpos = 0;
1627 this.commentTimer.stop();
1628 this.commentTimer.reset();
1629
1630 var playing:Boolean = false;
1631 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
1632 if(videoDisplay != null && videoDisplay.playing){
1633 playing = true;
1634 }
1635 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
1636 if(isMovieClipPlaying){
1637 playing = true;
1638 }
1639 }
1640
1641 if(playing){
1642 this.play();
1643 }
1644 this.seek(0);
1645
1646
1647 //������������������������������������������������������
1648 videoPlayer.canvas_nicowari.removeAllChildren();
1649 if(nicowariMC != null){
1650 this.pauseByNicowari(true);
1651 }
1652
1653 }
1654
1655 }catch(error:Error){
1656 trace(error.getStackTrace());
1657 logManager.addLog("������������������������������������������:" + error + ":" + error.getStackTrace());
1658 }
1659 }
1660
1661 /**
1662 * VideoDisplay���������������������������������������������������������
1663 * @param videoDisplay
1664 *
1665 */
1666 private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1667 videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1668 videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1669 videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1670 }
1671
1672 /**
1673 * VideoDisplay���������������������������������������������������������
1674 * @param videoDisplay
1675 *
1676 */
1677 private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{
1678 if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){
1679 videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler);
1680 }
1681 if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){
1682 videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler);
1683 }
1684 if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){
1685 videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler);
1686 }
1687 }
1688
1689 /**
1690 *
1691 * @param event
1692 *
1693 */
1694 private function durationChangeEventHandler(event:TimeEvent):void{
1695 if(videoInfoView.isResizePlayerEachPlay){
1696 resizePlayerJustVideoSize(videoPlayer.nowRatio);
1697 }else{
1698 resizePlayerJustVideoSize();
1699 }
1700 }
1701
1702 /**
1703 *
1704 * @param loader
1705 *
1706 */
1707 // private function removeMovieClipEventHandlers(loader:Loader):void{
1708 // if(loader.hasEventListener(Event.COMPLETE)){
1709 // loader.removeEventListener(Event.COMPLETE, convertCompleteHandler);
1710 // }
1711 // }
1712
1713 /**
1714 * ������������������������������������������������������������������������������
1715 * @return
1716 *
1717 */
1718 public function getStreamingProgress():int{
1719 var value:int = 0;
1720 if(isStreamingPlay){
1721 if(videoDisplay != null){
1722 value = (videoDisplay.bytesLoaded*100 / videoDisplay.bytesTotal);
1723 }else if(loader != null && loader.contentLoaderInfo != null){
1724 value = (loader.contentLoaderInfo.bytesLoaded*100 / loader.contentLoaderInfo.bytesTotal);
1725 }else{
1726 value = 100;
1727 }
1728 }else{
1729 value = 100;
1730 }
1731 return value;
1732 }
1733
1734
1735 /**
1736 * ���������������������������������������������������MB/s������������������
1737 * @return
1738 *
1739 */
1740 public function getStreamingSpeed():Number
1741 {
1742
1743 // timer������1000ms���������������������
1744
1745 var value:Number = 0;
1746 if (isStreamingPlay)
1747 {
1748 if(videoDisplay != null){
1749 value = videoDisplay.bytesLoaded - this.lastLoadedBytes;
1750 this.lastLoadedBytes = videoDisplay.bytesLoaded;
1751 }else if(loader != null && loader.contentLoaderInfo != null){
1752 value = loader.contentLoaderInfo.bytesLoaded - this.lastLoadedBytes;
1753 this.lastLoadedBytes = loader.contentLoaderInfo.bytesLoaded;
1754 }else{
1755 return value;
1756 }
1757
1758 trace(value);
1759
1760 //MB���������
1761 value = value / 1000000;
1762
1763 // MB/s���������
1764 value = value / 1;
1765 }
1766 else
1767 {
1768 // ���������������
1769 }
1770
1771 return value;
1772
1773 }
1774
1775 /**
1776 *
1777 * @return
1778 *
1779 */
1780 public function get bytesLoaded():Number{
1781
1782 var value:Number = 0.0;
1783
1784 if(videoDisplay != null){
1785 value = videoDisplay.bytesLoaded;
1786 }else if(loader != null && loader.contentLoaderInfo != null){
1787 value = loader.contentLoaderInfo.bytesLoaded;
1788 }
1789
1790 return value;
1791 }
1792
1793 /**
1794 *
1795 * @param event
1796 *
1797 */
1798 private function streamingProgressHandler(event:TimerEvent):void{
1799 if(isStreamingPlay){
1800 var value:int = getStreamingProgress();
1801 var speed:Number = getStreamingSpeed();
1802 if(value >= 100){
1803 this.videoPlayer.label_playSourceStatus.text = "Streaming:100%";
1804 videoPlayer.videoController.resetStatusAlpha();
1805 if(streamingProgressTimer != null){
1806 streamingProgressTimer.stop();
1807 }
1808
1809 // 100%���������������������������������������������������������������������������������������
1810 if(this.bytesLoaded <= 64){
1811 if(this.streamingRetryCount <= 3 ){
1812 // ���������������
1813 this.streamingRetryCount++;
1814 stop();
1815 logManager.addLog("���������������������������������������(���������������������������:������������������������������:" + this.bytesLoaded + ")");
1816 videoPlayer.label_downloadStatus.text = "������������������������������������������������������������������(" + this.streamingRetryCount +"������ )";
1817
1818 if(nicoVideoAccessRetryTimer != null){
1819 nicoVideoAccessRetryTimer.stop();
1820 nicoVideoAccessRetryTimer = null;
1821 }
1822 nicoVideoAccessRetryTimer = new Timer(5000*this.streamingRetryCount, 1);
1823 nicoVideoAccessRetryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:Event):void{
1824 (event.currentTarget as Timer).stop();
1825 play();
1826 });
1827 nicoVideoAccessRetryTimer.start();
1828
1829 }else{
1830 stop();
1831 logManager.addLog("���������������������������:������������������������������:" + this.bytesLoaded);
1832 videoPlayer.label_downloadStatus.text = "���������������������������������������������(���������������������������������������������������)";
1833 }
1834 }else{
1835 // ������������������
1836 this.streamingRetryCount = 0;
1837 }
1838
1839 }else{
1840
1841 var formatter:NumberFormatter = new NumberFormatter();
1842 formatter.precision = 2;
1843 var str:String = formatter.format(speed) + "MB/s"
1844
1845 this.videoPlayer.label_playSourceStatus.text = "Streaming:" + value + "% (" + str + ")";
1846 }
1847 }else{
1848 if(streamingProgressTimer != null){
1849 streamingProgressTimer.stop();
1850 }
1851 }
1852 }
1853
1854 /**
1855 * ������������������������������������������������������
1856 * @param evt
1857 *
1858 */
1859 private function currentTimeChangeEventHandler(event:TimeEvent = null):void{
1860 try{
1861 var allSec:String="00",allMin:String="0";
1862 var nowSec:String="00",nowMin:String="0";
1863
1864 this.commentTimerVpos = event.time*1000;
1865
1866 nowSec = String(int(this.videoDisplay.currentTime%60));
1867 nowMin = String(int(this.videoDisplay.currentTime/60));
1868
1869 allSec = String(int(this.videoDisplay.duration%60));
1870 allMin = String(int(this.videoDisplay.duration/60));
1871
1872 if(nowSec.length == 1){
1873 nowSec = "0" + nowSec;
1874 }
1875 if(allSec.length == 1){
1876 allSec = "0" + allSec;
1877 }
1878
1879 videoPlayer.videoController_under.slider_timeline.enabled = true;
1880 videoPlayer.videoController_under.slider_timeline.minimum = 0;
1881 videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1882 if(!this.sliderChanging){
1883
1884 this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1885 this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration;
1886 videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime;
1887
1888 }
1889 videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1890 videoPlayer.videoController_under.slider_timeline.enabled = true;
1891
1892 videoPlayer.videoController.slider_timeline.enabled = true;
1893 videoPlayer.videoController.slider_timeline.minimum = 0;
1894 videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration;
1895 if(!this.sliderChanging){
1896 videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime;
1897 }
1898 videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec;
1899 videoPlayer.videoController.slider_timeline.enabled = true;
1900 }catch(error:Error){
1901 VideoDisplay(event.currentTarget).stop();
1902 trace(error.getStackTrace());
1903 }
1904 }
1905
1906 /**
1907 * ������������������������������������������������������������������������
1908 * @param evt
1909 *
1910 */
1911 private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{
1912
1913 if(movieEndTimer != null){
1914 movieEndTimer.stop();
1915 movieEndTimer = null;
1916 }
1917 //���������������������������������������������������������
1918 movieEndTimer = new Timer(2000, 1);
1919 movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, videoPlayCompleteWaitHandler);
1920 movieEndTimer.start();
1921
1922 }
1923
1924 /**
1925 *
1926 *
1927 */
1928 private function videoPlayCompleteWaitHandler(event:TimerEvent):void{
1929 if (!isCounted)
1930 {
1931 //���������������������
1932 var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
1933 if (videoId != null)
1934 {
1935 addVideoPlayCount(videoId, true);
1936 }
1937 isCounted = true;
1938 }
1939
1940 logManager.addLog("***���������������***");
1941
1942 if (videoPlayer.isRepeat)
1943 {
1944
1945 /* ���������1��������������� */
1946
1947 if (isPlayListingPlay)
1948 {
1949 if(isStreamingPlay)
1950 {
1951 logManager.addLog("***���������������������(���������������������)***");
1952 this.seek(0);
1953 if (this.videoDisplay != null)
1954 {
1955 this.videoDisplay.play();
1956 }
1957 }
1958 else
1959 {
1960 logManager.addLog("***���������������������(������������)***");
1961 this.stop();
1962 playMovie(
1963 this.videoInfoView.getPlayListUrl(playingIndex),
1964 this.videoInfoView.playList,
1965 playingIndex,
1966 this.videoPlayer.title);
1967
1968 }
1969 }
1970 else if(isStreamingPlay)
1971 {
1972 logManager.addLog("***���������������������(���������������������)***");
1973 this.seek(0);
1974 if (this.videoDisplay != null)
1975 {
1976 this.videoDisplay.play();
1977 }
1978 }
1979 else
1980 {
1981 logManager.addLog("***���������������������(������������)***");
1982 this.stop();
1983 this.play();
1984 }
1985 }
1986 else
1987 {
1988
1989 /* ������������������������������ */
1990
1991 this.stop();
1992
1993 if (isPlayListingPlay)
1994 {
1995
1996 /* ��������������������������� */
1997
1998 logManager.addLog("***���������������(������������)***");
1999 var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2000 if (playingIndex >= this.videoInfoView.getPlayList().length-1)
2001 {
2002 /* ������������������������������������ */
2003 playingIndex = 0;
2004 if (this.videoPlayer.videoInfoView.isRepeatAll())
2005 {
2006 playMovie(
2007 this.videoInfoView.getPlayListUrl(playingIndex),
2008 this.videoInfoView.playList,
2009 playingIndex,
2010 PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2011 }
2012 }
2013 else
2014 {
2015 /* ������������������������������������ */
2016 playingIndex++;
2017 playMovie(
2018 this.videoInfoView.getPlayListUrl(playingIndex),
2019 this.videoInfoView.playList,
2020 playingIndex,
2021 PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2022 }
2023 }
2024 }
2025 }
2026
2027
2028 /**
2029 * SWF������������������������������������������������������������������
2030 *
2031 */
2032 private function movieClipCompleteHandler():void{
2033
2034 this.lastFrame = 0;
2035 this.lastNicowariFrame = 0;
2036
2037 if(movieEndTimer != null){
2038 movieEndTimer.stop();
2039 movieEndTimer = null;
2040 }
2041 //���������������������������������������������������������
2042 movieEndTimer = new Timer(2000, 1);
2043 movieEndTimer.addEventListener(TimerEvent.TIMER_COMPLETE, movieClipPlayCompleteWaitHandler);
2044 movieEndTimer.start();
2045
2046
2047 }
2048
2049 /**
2050 *
2051 *
2052 */
2053 private function movieClipPlayCompleteWaitHandler(event:TimerEvent):void{
2054 if(!isCounted){
2055 //���������������������
2056 var videoId:String = LibraryUtil.getVideoKey(this.source);
2057 if(videoId == null){
2058 //���������������������������������������������������������
2059 videoId = LibraryUtil.getVideoKey(this.videoPlayer.title);
2060 }
2061 if(videoId != null){
2062 addVideoPlayCount(videoId, true);
2063 }
2064 isCounted = true;
2065 }
2066
2067 logManager.addLog("***���������������***");
2068 this.lastFrame = 0;
2069 this.lastNicowariFrame = 0;
2070
2071 if(videoPlayer.isRepeat){
2072 if(isPlayListingPlay){
2073 if(isStreamingPlay){
2074 logManager.addLog("***���������������������(���������������������)***");
2075 this.seek(0);
2076 }else{
2077 logManager.addLog("***���������������������(������������)***");
2078 this.stop();
2079 mc.gotoAndStop(0);
2080 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2081 playingIndex, this.videoPlayer.title);
2082 }
2083 }else if(isStreamingPlay){
2084 logManager.addLog("***���������������������(���������������������)***");
2085 this.seek(0);
2086 }else{
2087 logManager.addLog("***���������������������(������������)***");
2088 this.stop();
2089 mc.gotoAndStop(0);
2090 this.play();
2091 }
2092 }else{
2093 this.stop();
2094 mc.gotoAndStop(0);
2095 if(isPlayListingPlay){
2096 logManager.addLog("***���������������(������������)***");
2097 var windowType:int = PlayerController.WINDOW_TYPE_FLV;
2098 if(playingIndex >= this.videoInfoView.getPlayList().length-1){
2099 playingIndex = 0;
2100 if(this.videoPlayer.videoInfoView.isRepeatAll()){
2101 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2102 playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2103 }
2104 }else{
2105 playingIndex++;
2106 playMovie(this.videoInfoView.getPlayListUrl(playingIndex), this.videoInfoView.playList,
2107 playingIndex, PathMaker.getVideoName(this.videoInfoView.getPlayListUrl(playingIndex)));
2108 }
2109 }
2110 }
2111
2112 isMovieClipStopping = false;
2113 }
2114
2115
2116 /**
2117 * ���������������������ID������������������������������������������������������������1���������������
2118 * @param videoId ���������������������������������������������������ID
2119 * @param isSave ���������������������������������������������������
2120 */
2121 private function addVideoPlayCount(videoId:String, isSave:Boolean):void{
2122 var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2123 if(nnddVideo != null){
2124 nnddVideo.playCount = nnddVideo.playCount + 1;
2125 libraryManager.update(nnddVideo, isSave);
2126 trace("���������������������:" + nnddVideo.videoName + "," + nnddVideo.playCount);
2127 }else{
2128 //���������������
2129 trace("������������������������������������:" + videoId);
2130 }
2131 }
2132
2133 /**
2134 * ���������������������������������������������
2135 * swf���������������SWF���������������������������������������������������
2136 *
2137 * @param event
2138 *
2139 */
2140 private function commentTimerHandler(event:TimerEvent):void{
2141
2142 if(isPlayerClosing){
2143 if(commentTimer != null){
2144 commentTimer.stop();
2145 commentTimer.reset();
2146 }
2147 return;
2148 }
2149
2150 // ���������������
2151 this.setVolume(this.videoPlayer.videoController.slider_volume.value);
2152
2153 var nowSec:String="00",nowMin:String="0";
2154 nowSec = String(int(commentTimerVpos/1000%60));
2155 nowMin = String(int(commentTimerVpos/1000/60));
2156 if(nowSec.length == 1){
2157 nowSec = "0" + nowSec;
2158 }
2159 var nowTime:String = nowMin + ":" + nowSec;
2160
2161 var allSec:String="00",allMin:String="0"
2162 if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2163 allSec = String(int(mc.totalFrames/swfFrameRate%60));
2164 allMin = String(int(mc.totalFrames/swfFrameRate/60));
2165 }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2166 allSec = String(int(videoDisplay.duration%60));
2167 allMin = String(int(videoDisplay.duration/60));
2168 }
2169 if(allSec.length == 1){
2170 allSec = "0" + allSec;
2171 }
2172 var allTime:String = allMin +":" + allSec;
2173
2174 if(!isCounted && commentTimerVpos > 10000){
2175 //���������������������
2176 var videoId:String = LibraryUtil.getVideoKey(this.videoPlayer.title);
2177 if(videoId != null){
2178 addVideoPlayCount(videoId, false);
2179 }
2180 isCounted = true;
2181 }
2182
2183 //SWF���������������������������������������������������������������������
2184 if(isMovieClipPlaying && this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2185
2186 videoPlayer.videoController_under.slider_timeline.enabled = true;
2187 videoPlayer.videoController_under.slider_timeline.minimum = 0;
2188 videoPlayer.videoController_under.slider_timeline.maximum = mc.totalFrames;
2189
2190 videoPlayer.videoController.slider_timeline.enabled = true;
2191 videoPlayer.videoController.slider_timeline.minimum = 0;
2192 videoPlayer.videoController.slider_timeline.maximum = mc.totalFrames;
2193
2194 if(!this.sliderChanging){
2195 videoPlayer.videoController_under.slider_timeline.value = mc.currentFrame;
2196 videoPlayer.videoController.slider_timeline.value = mc.currentFrame;
2197 }
2198
2199 // trace(nowMin + "/" + nowSec);
2200
2201 videoPlayer.videoController_under.label_time.text = nowTime + "/"+ allTime;
2202 videoPlayer.videoController.label_time.text = nowTime + "/"+ allTime;
2203
2204 if(mc.currentFrame >= mc.totalFrames-1 || mc.currentFrame == this.lastFrame ){
2205 this.lastFrame = mc.currentFrame;
2206 //���������movieClip������������������������������������������������������
2207 if(!isMovieClipStopping){
2208 isMovieClipStopping = true;
2209 movieClipCompleteHandler();
2210 }
2211 return;
2212 }else{
2213 if(!isMovieClipStopping){
2214 this.lastFrame = mc.currentFrame;
2215 }
2216 }
2217 }
2218
2219 var tempTime:Number = (new Date).time;
2220
2221 //SWF������������������������������������������������������������������
2222 if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2223 this.commentTimerVpos += (tempTime - this.time);
2224 }
2225
2226 //���������������������
2227 var commentArray:Vector.<NNDDComment> = this.commentManager.setComment(commentTimerVpos, (tempTime - this.time)*3, this.videoPlayer.isShowComment);
2228 this.commentManager.moveComment(tempTime/1000 - this.time/1000, videoInfoView.showCommentSec);
2229 this.commentManager.removeComment(commentTimerVpos, videoInfoView.showCommentSec * 1000);
2230 this.time = tempTime;
2231
2232 //������������������������������������������������������
2233 if(videoPlayer.videoInfoView.checkbox_SyncComment.selected && videoPlayer.videoInfoView.visible
2234 // && (videoPlayer.stage.displayState != StageDisplayState.FULL_SCREEN_INTERACTIVE
2235 // && videoInfoView.isActive)
2236 ){
2237
2238 var lastMin:String = commentManager.getComments().lastMin;
2239
2240 var tempNowTime:String = nowTime;
2241 if(lastMin.length == 3){
2242 //���������������3���������������:���������������������
2243 if(tempNowTime.length == 4){
2244 //���������������:������������4���
2245 tempNowTime = "00" + tempNowTime;
2246 }else if(tempNowTime.length == 5){
2247 //���������������:������������5���
2248 tempNowTime = "0" + tempNowTime;
2249 }
2250 }else if(lastMin.length == 2){
2251 //���������������2���������������:������������5������
2252 if(tempNowTime.length == 4){
2253 //���������������:������������4���
2254 tempNowTime = "0" + tempNowTime;
2255 }
2256
2257 }else if(lastMin.length == 1){
2258 //���������������1���������������:������������4������
2259
2260 }
2261
2262 if(tempNowTime.length > lastMin.length+3){
2263 tempNowTime = tempNowTime.substring(1);
2264 }
2265
2266
2267 var index:int = 0;
2268 if(commentArray.length > 0 && comments != null){
2269 var myComment:NNDDComment = commentArray[0];
2270 for each(var comment:NNDDComment in commentArray){
2271 if(comment.vpos > myComment.vpos){
2272 myComment = comment;
2273 }
2274 }
2275 index = comments.getCommentIndex(tempNowTime, myComment.text);
2276
2277 if(this.videoPlayer.videoInfoView.tabNavigator_comment.selectedIndex == 0){
2278
2279 if(this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition < index){
2280 index = index - (this.videoPlayer.videoInfoView.dataGrid_comment.rowCount) + 2;
2281 if(index > 0){
2282 if(index < this.videoPlayer.videoInfoView.dataGrid_comment.maxVerticalScrollPosition){
2283 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = index;
2284 }else{
2285 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = this.videoPlayer.videoInfoView.dataGrid_comment.maxVerticalScrollPosition;
2286 }
2287 }
2288 }
2289
2290 }else if(this.videoPlayer.videoInfoView.tabNavigator_comment.selectedIndex == 1){
2291
2292 if(this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition < index){
2293 index = index - (this.videoPlayer.videoInfoView.dataGrid_oldComment.rowCount) + 2;
2294 if(index > 0){
2295 if(index < this.videoPlayer.videoInfoView.dataGrid_oldComment.maxVerticalScrollPosition){
2296 this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition = index;
2297 }else{
2298 this.videoPlayer.videoInfoView.dataGrid_oldComment.verticalScrollPosition = this.videoPlayer.videoInfoView.dataGrid_oldComment.maxVerticalScrollPosition;
2299 }
2300 }
2301 }
2302
2303 }
2304
2305 }
2306 }
2307
2308
2309 //������������������������
2310 var date:Date = new Date();
2311 var hh:String = new String(int(date.getHours()));
2312 var mm:String = new String(int(date.getMinutes()));
2313 if(hh.length == 1){
2314 hh = "0" + hh;
2315 }
2316 if(mm.length == 1){
2317 mm = "0" + mm;
2318 }
2319 var jihouResult:Array = commentManager.isJihouSettingTime(hh + mm);
2320 if(jihouResult != null && playingJihou == null){
2321 //������������
2322 playingJihou = hh+mm;
2323 playNicowari(jihouResult[0], jihouResult[1]);
2324 }
2325 if(playingJihou != null && playingJihou != (hh+mm)){
2326 playingJihou = null;
2327 }
2328
2329 if(!this.videoPlayer.isShowComment){
2330 this.commentManager.removeAll();
2331 }
2332
2333 }
2334
2335 /**
2336 * ������������������������������������������������������������������������
2337 * @param volume 0������1���������������������������������������������
2338 * @return ������������������������������������
2339 *
2340 */
2341 public function setVolume(volume:Number):Number{
2342 if(this.windowReady){
2343 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
2344 if(videoDisplay != null){
2345 videoDisplay.volume = volume;
2346 this.videoPlayer.videoController.slider_volume.value = volume;
2347 this.videoPlayer.videoController_under.slider_volume.value = volume;
2348 return videoDisplay.volume;
2349 }
2350 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2351 if(mc != null){
2352 var transForm:SoundTransform = new SoundTransform(volume, 0);
2353 mc.soundTransform = transForm;
2354 this.videoPlayer.videoController.slider_volume.value = volume;
2355 this.videoPlayer.videoController_under.slider_volume.value = volume;
2356 return mc.soundTransform.volume;
2357 }
2358 }
2359 }
2360 return 0;
2361 }
2362
2363 /**
2364 * PlayerController���������������CommentManager������������������
2365 * @return
2366 *
2367 */
2368 public function getCommentManager():CommentManager{
2369 return commentManager;
2370 }
2371
2372 /**
2373 * ���������������������������������������������������������������������������������������������������
2374 * ���������SWF������������������������������������������������������������������������Loader������������������������������������������������������
2375 */
2376 public function windowResized(isCommentRemove:Boolean):void{
2377
2378 if(this.windowReady){
2379
2380 //SWFLoader���������������������������������������
2381 if(swfLoader != null && this.windowType == PlayerController.WINDOW_TYPE_SWF){
2382 //������������������
2383
2384 (swfLoader.getChildAt(0) as Loader).x = 0;
2385 (swfLoader.getChildAt(0) as Loader).y = 0;
2386 var flashDistX:int = (swfLoader.getChildAt(0) as Loader).width - PlayerController.NICO_SWF_WIDTH;
2387 var flashDistY:int = (swfLoader.getChildAt(0) as Loader).height - PlayerController.NICO_SWF_HEIGHT;
2388 var scaleX:Number = swfLoader.width / ((swfLoader.getChildAt(0) as Loader).width - flashDistX);
2389 var scaleY:Number = swfLoader.height / ((swfLoader.getChildAt(0) as Loader).height - flashDistY);
2390 if(scaleX < scaleY){
2391 (swfLoader.getChildAt(0) as Loader).scaleX = scaleX;
2392 (swfLoader.getChildAt(0) as Loader).scaleY = scaleX;
2393 var centorY:int = swfLoader.height / 2;
2394 var newY:int = centorY - (PlayerController.NICO_SWF_HEIGHT*scaleX)/2;
2395 // trace("newY:"+newY);
2396 if(newY > 0){
2397 (swfLoader.getChildAt(0) as Loader).y = newY;
2398 }
2399 }else{
2400 (swfLoader.getChildAt(0) as Loader).scaleX = scaleY;
2401 (swfLoader.getChildAt(0) as Loader).scaleY = scaleY;
2402 var centorX:int = swfLoader.width / 2;
2403 var newX:int = centorX - (PlayerController.NICO_SWF_WIDTH*scaleY)/2;
2404 // trace("newX:"+newX);
2405 if(newX > 0){
2406 (swfLoader.getChildAt(0) as Loader).x = newX;
2407 }
2408 }
2409
2410 }
2411
2412 //���������SWF������������������������������������������
2413 if(nicowariSwfLoader != null){
2414
2415 (nicowariSwfLoader.getChildAt(0) as Loader).x = 0;
2416 (nicowariSwfLoader.getChildAt(0) as Loader).y = 0;
2417
2418 var nicowariDistX:Number = (nicowariSwfLoader.getChildAt(0) as Loader).width - PlayerController.NICO_WARI_WIDTH;
2419 var nicowariDistY:Number = (nicowariSwfLoader.getChildAt(0) as Loader).height - PlayerController.NICO_WARI_HEIGHT;
2420
2421 var nicowariScaleX:Number = nicowariSwfLoader.width / ((nicowariSwfLoader.getChildAt(0) as Loader).width - nicowariDistX);
2422 var nicowariScaleY:Number = nicowariSwfLoader.height / ((nicowariSwfLoader.getChildAt(0) as Loader).height - nicowariDistY);
2423 if(nicowariScaleX < nicowariScaleY){
2424 (nicowariSwfLoader.getChildAt(0) as Loader).scaleX = nicowariScaleX;
2425 (nicowariSwfLoader.getChildAt(0) as Loader).scaleY = nicowariScaleX;
2426 centorY = nicowariSwfLoader.height / 2;
2427 newY = centorY - (PlayerController.NICO_WARI_HEIGHT*nicowariScaleX)/2;
2428 // trace("newY:"+newY);
2429 if(newY > 0){
2430 (nicowariSwfLoader.getChildAt(0) as Loader).y = newY;
2431 }
2432 }else{
2433 (nicowariSwfLoader.getChildAt(0) as Loader).scaleX = nicowariScaleY;
2434 (nicowariSwfLoader.getChildAt(0) as Loader).scaleY = nicowariScaleY;
2435 centorX = nicowariSwfLoader.width / 2;
2436 newX = centorX - (PlayerController.NICO_WARI_WIDTH*nicowariScaleY)/2;
2437 // trace("newX:"+newX);
2438 if(newX > 0){
2439 (nicowariSwfLoader.getChildAt(0) as Loader).x = newX;
2440 }
2441 }
2442 }
2443
2444 if(isCommentRemove){
2445 // ���������������������������
2446 commentManager.removeAll();
2447 }else{
2448 // ���������������������������������
2449 commentManager.validateCommentPosition();
2450 }
2451
2452
2453
2454 }
2455 }
2456
2457 /**
2458 * ���������������seekTime������������������������������������������������
2459 * @param seekTime ������������������������������������������������������������������������������������������������������
2460 *
2461 */
2462 public function seek(seekTime:Number):void{
2463 trace(seekTime);
2464 if(this.windowReady){
2465 if((new Date().time)-lastSeekTime > 1000){
2466 if((videoDisplay != null && videoDisplay.initialized && videoDisplay.duration > 0)
2467 || (swfLoader != null && swfLoader.initialized)){
2468
2469
2470 trace("seekStart:" + seekTime);
2471 this.commentTimer.stop();
2472 this.commentTimer.reset();
2473
2474 //������������������������������������������������������
2475 commentManager.getComments().resetEnableShowFlag();
2476
2477 //���������������������������������������������
2478 this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = 0;
2479
2480 if(this.windowType == PlayerController.WINDOW_TYPE_FLV){
2481 videoDisplay.seek(seekTime);
2482 commentTimerVpos = seekTime*1000;
2483 }else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){
2484 if(pausing){
2485 mc.gotoAndStop(int(seekTime));
2486 }
2487 else
2488 {
2489 mc.gotoAndPlay(int(seekTime));
2490 }
2491 commentTimerVpos = (seekTime/swfFrameRate)*1000;
2492 }
2493
2494 commentManager.removeAll();
2495
2496 if(!this.pausing){
2497 commentTimer.start();
2498 }
2499 lastSeekTime = new Date().time;
2500
2501
2502
2503 }
2504 }
2505 }
2506 }
2507
2508
2509 /**
2510 * ������Player������������������������������������������������
2511 * @return Player���������������������������true������������������������������false���
2512 *
2513 */
2514 public function isOpen():Boolean{
2515 if(this.videoPlayer.nativeWindow != null){
2516 return !this.videoPlayer.closed;
2517 }
2518 return false;
2519 }
2520
2521 /**
2522 * Player������������������Open������������
2523 *
2524 */
2525 public function open():Boolean{
2526 if(this.videoPlayer != null){
2527 this.videoPlayer.open();
2528 }else{
2529 return false;
2530 }
2531 if(this.videoInfoView != null){
2532 this.videoInfoView.open();
2533 }else{
2534 return false;
2535 }
2536 return true;
2537 }
2538
2539 /**
2540 * ���������������������Player������������������������������
2541 *
2542 */
2543 public function playerExit():void{
2544
2545 this.stop();
2546 if(this.videoPlayer != null && this.videoPlayer.nativeWindow != null && !this.videoPlayer.closed){
2547 this.videoPlayer.restore();
2548 // this.videoPlayer.saveStore();
2549 this.videoPlayer.close();
2550 }
2551 if(this.videoPlayer != null && this.videoInfoView.nativeWindow != null && !this.videoInfoView.closed){
2552 this.saveNgList();
2553 this.videoInfoView.restore();
2554 // this.videoInfoView.saveStore();
2555 this.videoInfoView.close();
2556 }
2557 }
2558
2559 /**
2560 * ���������������������ID������������������������������������
2561 * ���������������������������������������������(������������������������������������������������������������)���������������
2562 * ���������������������������������������������
2563 *
2564 * @param videoId
2565 *
2566 */
2567 public function reload(videoId:String):void
2568 {
2569
2570 stop();
2571
2572 var nnddVideo:NNDDVideo = libraryManager.isExist(videoId);
2573
2574 if (isStreamingPlay || nnddVideo == null)
2575 {
2576 playMovie("http://www.nicovideo.jp/watch/" + videoId);
2577 }
2578 else
2579 {
2580 playMovie(nnddVideo.getDecodeUrl());
2581 }
2582
2583 }
2584
2585 /**
2586 * ���������NG���������������������������������
2587 *
2588 */
2589 public function saveNgList():void{
2590 this.ngListManager.saveNgList(LibraryManagerBuilder.instance.libraryManager.systemFileDir);
2591 }
2592
2593 public function getCommentListProvider():ArrayCollection{
2594 return this.videoPlayer.getCommentListProvider();
2595 }
2596
2597 public function getOwnerCommentListProvider():ArrayCollection{
2598 return this.videoPlayer.videoInfoView.ownerCommentProvider;
2599 }
2600
2601
2602 /**
2603 * ������������������NG���������������������������������������������������
2604 * @param date ������������������������������������
2605 */
2606 public function reloadLocalComment(date:Date = null):void{
2607
2608 if(date != null){
2609 trace(date.time);
2610 }
2611
2612 if(this.videoInfoView.ngListProvider != null){
2613
2614 var videoMin:int = 1;
2615 if(this.windowType==PlayerController.WINDOW_TYPE_SWF && this.mc != null){
2616 videoMin = mc.totalFrames/swfFrameRate/60
2617 }else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){
2618 videoMin = videoDisplay.duration/60;
2619 }
2620 ++videoMin;
2621
2622 if(!this.isStreamingPlay && this.source != null && this.source != "" ){
2623 comments = new Comments(
2624 PathMaker.createNomalCommentPathByVideoPath(source),
2625 PathMaker.createOwnerCommentPathByVideoPath(source),
2626 this.videoPlayer.getCommentListProvider(),
2627 this.videoPlayer.videoInfoView.ownerCommentProvider,
2628 this.ngListManager,
2629 this.videoInfoView.isShowOnlyPermissionComment,
2630 this.videoInfoView.isHideSekaShinComment,
2631 this.videoInfoView.showCommentCountPerMin * videoMin,
2632 this.videoInfoView.showOwnerCommentCountPerMin * videoMin,
2633 this.videoInfoView.isNgUpEnable, date);
2634 }else if(this.isStreamingPlay){
2635 comments = new Comments(
2636 PathMaker.createNomalCommentPathByVideoPath(LibraryManagerBuilder.instance.libraryManager.tempDir.url + "/nndd.flv"),
2637 PathMaker.createOwnerCommentPathByVideoPath(LibraryManagerBuilder.instance.libraryManager.tempDir.url + "/nndd.flv"),
2638 this.videoPlayer.getCommentListProvider(),
2639 this.videoPlayer.videoInfoView.ownerCommentProvider,
2640 this.ngListManager,
2641 this.videoInfoView.isShowOnlyPermissionComment,
2642 this.videoInfoView.isHideSekaShinComment,
2643 this.videoInfoView.showCommentCountPerMin * videoMin,
2644 this.videoInfoView.showOwnerCommentCountPerMin * videoMin,
2645 this.videoInfoView.isNgUpEnable, date);
2646 }
2647 commentManager.setComments(comments);
2648 }
2649
2650 this.windowResized(true);
2651
2652 }
2653
2654 /**
2655 * ���������������������������������������������������������������
2656 * @param videoPath
2657 *
2658 */
2659 private function setInfo(videoPath:String, thumbInfoPath:String, ichibaInfoPath:String, isStreaming:Boolean):void{
2660
2661 var videoID:String = PathMaker.getVideoID(videoPath);
2662
2663 if(!isStreaming){ //������������������������������������������������������������������������������������������������������������������������������
2664
2665 if(videoID != null && (UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != "") ){
2666
2667 //���������
2668 videoInfoView.ichibaNicoProvider.addItem({
2669 col_image:"",
2670 col_info:"������������������������������",
2671 col_link:""
2672 });
2673 videoPlayer.videoInfoView.owner_text_nico = "";
2674
2675 }else{
2676 videoInfoView.ichibaNicoProvider.addItem({
2677 col_image:"",
2678 col_info:"������������������������������������������������",
2679 col_link:""
2680 });
2681
2682 var thumbInfoAnalyzer:ThumbInfoAnalyzer = null;
2683
2684 if(videoPath != null){
2685
2686 var thumbInfoPath:String = PathMaker.createThmbInfoPathByVideoPath(videoPath);
2687
2688 var fileIO:FileIO = new FileIO(logManager);
2689 var xml:XML = fileIO.loadXMLSync(thumbInfoPath, false);
2690
2691 if(xml != null){
2692 thumbInfoAnalyzer = new ThumbInfoAnalyzer(xml);
2693 }
2694 }
2695
2696 if(thumbInfoAnalyzer != null){
2697
2698 var dateString:String = "(������������������������������)";
2699 var ownerText:String = "(������������������������������������)";
2700 var htmlInfo:String = "";
2701
2702 if(thumbInfoAnalyzer != null){
2703 var dateFormatter:DateFormatter = new DateFormatter();
2704 dateFormatter.formatString = "YYYY/MM/DD JJ:NN:SS";
2705 var date:Date = thumbInfoAnalyzer.getDateByFirst_retrieve();
2706 dateString = "���������:(������������������������)";
2707 if(date != null){
2708 dateString = "���������:" + dateFormatter.format(date);
2709 }
2710
2711 htmlInfo = thumbInfoAnalyzer.htmlTitle + "<br />" + dateString + "<br />" + thumbInfoAnalyzer.playCountAndCommentCountAndMyListCount;
2712
2713 ownerText = thumbInfoAnalyzer.thumbInfoHtml + "\n(���������������������������������)";
2714 }else{
2715
2716 if(videoPlayer.videoInfoView.owner_text_local.length > 1){
2717 ownerText = videoPlayer.videoInfoView.owner_text_local + "\n(���������������������������������)";
2718 }
2719
2720 htmlInfo = "(������������������������������)<br />" + dateString + "<br />(���������������������������������)";
2721 }
2722
2723 videoPlayer.videoInfoView.text_info.htmlText = htmlInfo;
2724
2725 if(videoPlayer.videoInfoView.checkbox_showHtml.selected){
2726 videoPlayer.videoInfoView.owner_text_temp = videoPlayer.videoInfoView.owner_text_nico;
2727 videoPlayer.videoInfoView.owner_text_nico = ownerText;
2728 }else{
2729 videoPlayer.videoInfoView.owner_text_temp = ownerText;
2730 }
2731
2732 videoPlayer.videoInfoView.nicoTagProvider = thumbInfoAnalyzer.tagArray;
2733 videoPlayer.videoInfoView.nicoTagProvider.push("(���������������������������������������������������������������)");
2734 videoPlayer.setTagArray(thumbInfoAnalyzer.tagStrings);
2735
2736 }else{
2737
2738 videoPlayer.videoInfoView.text_info.htmlText = "(������������������������������)<br />(������������������������������)<br />(���������������������������������)";
2739 videoPlayer.videoInfoView.owner_text_nico = "(������������������������������)";
2740
2741 videoPlayer.videoInfoView.nicoTagProvider = videoPlayer.videoInfoView.localTagProvider;
2742 videoPlayer.videoInfoView.nicoTagProvider.push("(���������������������������������������������������������������)");
2743
2744 var tagStrings:Vector.<PlayerTagString> = new Vector.<PlayerTagString>();
2745 for each(var string:String in videoPlayer.videoInfoView.nicoTagProvider)
2746 {
2747 var tagString:PlayerTagString = new PlayerTagString(string);
2748 tagStrings.push(tagString);
2749 }
2750 videoPlayer.setTagArray(tagStrings);
2751
2752 }
2753 }
2754 }
2755
2756 if(videoID != null && (UserManager.instance.user != null && UserManager.instance.password != null) && (UserManager.instance.user != "" && UserManager.instance.password != "") ){
2757 retryCount = 0;
2758 setNicoVideoPageInfo(PathMaker.getVideoID(videoID), 0, isStreaming); //���������������������������������������������������
2759 }
2760
2761 setNicoRelationInfo(videoID); //������������������������������������������������������������������������������
2762
2763 setLocalIchibaInfo(ichibaInfoPath, isStreaming);
2764 setLocalThumbInfo(videoID, thumbInfoPath, isStreaming);
2765
2766 }
2767
2768
2769
2770 //-------------------------------------------------------
2771
2772 /**
2773 * ������������������������������������
2774 *
2775 */
2776 public function setNicoRelationInfoForRelationSortTypeChange():void{
2777 var videoId:String = PathMaker.getVideoID(videoPlayer.title);
2778 if(videoId != null){
2779 setNicoRelationInfo(videoId);
2780 }
2781 }
2782
2783 /**
2784 * ������������������������������������������������������������������������
2785 * @param videoID
2786 *
2787 */
2788 private function setNicoRelationInfo(videoID:String):void{
2789
2790 (videoInfoView.relationDataProvider as ArrayCollection).removeAll();
2791
2792 if(videoInfoView == null){
2793 return;
2794 }
2795
2796 if(nicoRelationInfoLoader != null){
2797 try{
2798 nicoRelationInfoLoader.close();
2799 }catch(error:Error){
2800 }
2801 }
2802
2803 videoInfoView.setRelationComboboxEnable(false);
2804
2805 var sort:String = RelationTypeUtil.convertRelationSortType(videoInfoView.relationSortIndex);
2806 var order:String = RelationTypeUtil.convertRelationOrderType(videoInfoView.relationOrderIndex);
2807
2808 logManager.addLog("���������������������������������(videoId:" + videoID + ", sort:" + sort + ", order:" + order + ")");
2809
2810 nicoRelationInfoLoader = new ApiGetRelation();
2811 nicoRelationInfoLoader.addEventListener(Event.COMPLETE, function(event:Event):void{
2812 (videoInfoView.relationDataProvider as