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