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