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