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