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