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