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