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