| 23 |
import mx.controls.DataGrid; |
import mx.controls.DataGrid; |
| 24 |
import mx.controls.SWFLoader; |
import mx.controls.SWFLoader; |
| 25 |
import mx.controls.Text; |
import mx.controls.Text; |
|
import mx.controls.VideoDisplay; |
|
| 26 |
import mx.controls.videoClasses.VideoError; |
import mx.controls.videoClasses.VideoError; |
| 27 |
import mx.core.Application; |
import mx.core.FlexGlobals; |
| 28 |
import mx.core.Window; |
import mx.core.Window; |
| 29 |
import mx.events.AIREvent; |
import mx.events.AIREvent; |
| 30 |
import mx.events.FlexEvent; |
import mx.events.FlexEvent; |
| 31 |
import mx.events.MetadataEvent; |
import mx.events.MetadataEvent; |
| 32 |
import mx.events.VideoEvent; |
import mx.events.VideoEvent; |
| 33 |
import mx.formatters.DateFormatter; |
import mx.formatters.DateFormatter; |
|
import mx.managers.PopUpManager; |
|
| 34 |
|
|
| 35 |
import org.libspark.utils.ForcibleLoader; |
import org.libspark.utils.ForcibleLoader; |
| 36 |
import org.mineap.nicovideo4as.MyListLoader; |
import org.mineap.nicovideo4as.MyListLoader; |
| 43 |
import org.mineap.nndd.FileIO; |
import org.mineap.nndd.FileIO; |
| 44 |
import org.mineap.nndd.LogManager; |
import org.mineap.nndd.LogManager; |
| 45 |
import org.mineap.nndd.Message; |
import org.mineap.nndd.Message; |
|
import org.mineap.nndd.NGListManager; |
|
| 46 |
import org.mineap.nndd.NNDDDownloader; |
import org.mineap.nndd.NNDDDownloader; |
|
import org.mineap.nndd.NNDDMyListAdder; |
|
| 47 |
import org.mineap.nndd.NNDDVideoPageWatcher; |
import org.mineap.nndd.NNDDVideoPageWatcher; |
| 48 |
import org.mineap.nndd.RenewDownloadManager; |
import org.mineap.nndd.RenewDownloadManager; |
|
import org.mineap.nndd.comment.Command; |
|
|
import org.mineap.nndd.comment.CommentManager; |
|
|
import org.mineap.nndd.comment.Comments; |
|
|
import org.mineap.nndd.event.LocalCommentSearchEvent; |
|
| 49 |
import org.mineap.nndd.history.HistoryManager; |
import org.mineap.nndd.history.HistoryManager; |
| 50 |
import org.mineap.nndd.library.ILibraryManager; |
import org.mineap.nndd.library.ILibraryManager; |
| 51 |
import org.mineap.nndd.library.LibraryManagerBuilder; |
import org.mineap.nndd.library.LibraryManagerBuilder; |
| 52 |
import org.mineap.nndd.library.LocalVideoInfoLoader; |
import org.mineap.nndd.library.LocalVideoInfoLoader; |
|
import org.mineap.nndd.library.namedarray.LibraryManager; |
|
| 53 |
import org.mineap.nndd.model.NNDDComment; |
import org.mineap.nndd.model.NNDDComment; |
| 54 |
import org.mineap.nndd.model.NNDDVideo; |
import org.mineap.nndd.model.NNDDVideo; |
| 55 |
import org.mineap.nndd.model.PlayList; |
import org.mineap.nndd.model.PlayList; |
| 56 |
import org.mineap.nndd.playList.PlayListManager; |
import org.mineap.nndd.playList.PlayListManager; |
| 57 |
|
import org.mineap.nndd.player.comment.Command; |
| 58 |
|
import org.mineap.nndd.player.comment.CommentManager; |
| 59 |
|
import org.mineap.nndd.player.comment.Comments; |
| 60 |
import org.mineap.nndd.util.DateUtil; |
import org.mineap.nndd.util.DateUtil; |
| 61 |
import org.mineap.nndd.util.IchibaBuilder; |
import org.mineap.nndd.util.IchibaBuilder; |
| 62 |
import org.mineap.nndd.util.LibraryUtil; |
import org.mineap.nndd.util.LibraryUtil; |
| 66 |
import org.mineap.nndd.util.ThumbInfoAnalyzer; |
import org.mineap.nndd.util.ThumbInfoAnalyzer; |
| 67 |
import org.mineap.nndd.util.ThumbInfoUtil; |
import org.mineap.nndd.util.ThumbInfoUtil; |
| 68 |
import org.mineap.nndd.util.WebServiceAccessUtil; |
import org.mineap.nndd.util.WebServiceAccessUtil; |
|
import org.mineap.nndd.view.SmoothVideoDisplay; |
|
| 69 |
import org.mineap.util.config.ConfigIO; |
import org.mineap.util.config.ConfigIO; |
| 70 |
import org.mineap.util.config.ConfigManager; |
import org.mineap.util.config.ConfigManager; |
| 71 |
|
import org.osmf.events.TimeEvent; |
| 72 |
|
|
| 73 |
|
import spark.components.VideoDisplay; |
| 74 |
|
|
| 75 |
/** |
/** |
|
* PlayerController.as |
|
| 76 |
* ニコニコ動画からのダウンロードを処理およびその他のGUI関連処理を行う。 |
* ニコニコ動画からのダウンロードを処理およびその他のGUI関連処理を行う。 |
| 77 |
* |
* |
| 78 |
* Copyright (c) 2008-2009 MAP - MineApplicationProject. All Rights Reserved. |
* @author shiraminekeisuke(MineAP) |
|
* |
|
|
* @author shiraminekeisuke |
|
| 79 |
* |
* |
| 80 |
*/ |
*/ |
| 81 |
public class PlayerController extends EventDispatcher |
public class PlayerController extends EventDispatcher |
| 102 |
private var loader:Loader = null; |
private var loader:Loader = null; |
| 103 |
private var isMovieClipPlaying:Boolean = false; |
private var isMovieClipPlaying:Boolean = false; |
| 104 |
|
|
| 105 |
private var videoDisplay:SmoothVideoDisplay = null; |
private var videoDisplay:VideoDisplay = null; |
| 106 |
|
|
| 107 |
private var nicowariSwfLoader:SWFLoader = null; |
private var nicowariSwfLoader:SWFLoader = null; |
| 108 |
|
|
| 175 |
|
|
| 176 |
private var _videoID:String = null; |
private var _videoID:String = null; |
| 177 |
|
|
|
private var _myListAdder:NNDDMyListAdder = null; |
|
|
|
|
| 178 |
private var nnddDownloaderForWatch:NNDDDownloader = null; |
private var nnddDownloaderForWatch:NNDDDownloader = null; |
| 179 |
|
|
| 180 |
private var lastFrame:int = 0; |
private var lastFrame:int = 0; |
| 445 |
if(!file.exists){ |
if(!file.exists){ |
| 446 |
Alert.show("動画が既に存在しません。\n動画が移動されたか、削除されている可能性があります。", "エラー"); |
Alert.show("動画が既に存在しません。\n動画が移動されたか、削除されている可能性があります。", "エラー"); |
| 447 |
logManager.addLog("動画が既に存在しません。動画が移動されたか、削除されている可能性があります。:" + file.nativePath); |
logManager.addLog("動画が既に存在しません。動画が移動されたか、削除されている可能性があります。:" + file.nativePath); |
| 448 |
Application.application.activate(); |
FlexGlobals.topLevelApplication.activate(); |
| 449 |
return; |
return; |
| 450 |
} |
} |
| 451 |
|
|
| 604 |
|
|
| 605 |
isMovieClipPlaying = false; |
isMovieClipPlaying = false; |
| 606 |
|
|
| 607 |
videoDisplay = new SmoothVideoDisplay(); |
videoDisplay = new VideoDisplay(); |
| 608 |
|
|
| 609 |
videoPlayer.label_downloadStatus.text = ""; |
videoPlayer.label_downloadStatus.text = ""; |
| 610 |
|
|
| 616 |
videoPlayer.canvas_video.removeAllChildren(); |
videoPlayer.canvas_video.removeAllChildren(); |
| 617 |
videoPlayer.canvas_video.addChild(videoDisplay); |
videoPlayer.canvas_video.addChild(videoDisplay); |
| 618 |
|
|
|
videoDisplay.smoothing = true; |
|
|
|
|
| 619 |
videoDisplay.setConstraintValue("bottom", 0); |
videoDisplay.setConstraintValue("bottom", 0); |
| 620 |
videoDisplay.setConstraintValue("left", 0); |
videoDisplay.setConstraintValue("left", 0); |
| 621 |
videoDisplay.setConstraintValue("right", 0); |
videoDisplay.setConstraintValue("right", 0); |
| 622 |
videoDisplay.setConstraintValue("top", 0); |
videoDisplay.setConstraintValue("top", 0); |
| 623 |
videoDisplay.bufferTime = 3; |
// videoDisplay.bufferTime = 3; |
| 624 |
|
|
| 625 |
videoDisplay.autoPlay = autoPlay; |
videoDisplay.autoPlay = autoPlay; |
| 626 |
videoDisplay.source = videoPath; |
videoDisplay.source = videoPath; |
| 871 |
renewDownloadManager.renewForOtherVideo(this.mailAddress, |
renewDownloadManager.renewForOtherVideo(this.mailAddress, |
| 872 |
this.password, PathMaker.getVideoID(videoId), videoName, |
this.password, PathMaker.getVideoID(videoId), videoName, |
| 873 |
new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)), |
new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)), |
| 874 |
videoInfoView.isAppendComment, null, Application.application.getSaveCommentMaxCount()); |
videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount()); |
| 875 |
}else{ |
}else{ |
| 876 |
renewDownloadManager.renewForCommentOnly(this.mailAddress, |
renewDownloadManager.renewForCommentOnly(this.mailAddress, |
| 877 |
this.password, PathMaker.getVideoID(videoId), videoName, |
this.password, PathMaker.getVideoID(videoId), videoName, |
| 878 |
new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)), |
new File(videoPath.substring(0, videoPath.lastIndexOf("/")+1)), |
| 879 |
videoInfoView.isAppendComment, null, Application.application.getSaveCommentMaxCount()); |
videoInfoView.isAppendComment, null, (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount()); |
| 880 |
} |
} |
| 881 |
} |
} |
| 882 |
|
|
| 905 |
videoInfoView.button_oldComment_reloadFromNico.label = "更新(ニコニコ動画)"; |
videoInfoView.button_oldComment_reloadFromNico.label = "更新(ニコニコ動画)"; |
| 906 |
logManager.addLog("過去ログの取得に失敗:" + event); |
logManager.addLog("過去ログの取得に失敗:" + event); |
| 907 |
|
|
| 908 |
Application.application.activate(); |
FlexGlobals.topLevelApplication.activate(); |
| 909 |
Alert.show("過去ログの取得に失敗しました。\nご利用のアカウントでは過去ログを取得できない可能性があります。\n(この機能はプレミアムアカウントでのみ利用可能です。)", Message.M_ERROR); |
Alert.show("過去ログの取得に失敗しました。\nご利用のアカウントでは過去ログを取得できない可能性があります。\n(この機能はプレミアムアカウントでのみ利用可能です。)", Message.M_ERROR); |
| 910 |
}); |
}); |
| 911 |
renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{ |
renewDownloadManagerForOldComment.addEventListener(RenewDownloadManager.PROCCESS_CANCEL, function(event:Event):void{ |
| 931 |
|
|
| 932 |
renewDownloadManagerForOldComment = null; |
renewDownloadManagerForOldComment = null; |
| 933 |
|
|
| 934 |
Application.application.activate(); |
FlexGlobals.topLevelApplication.activate(); |
| 935 |
Alert.show("過去ログの取得に失敗しました。", Message.M_ERROR); |
Alert.show("過去ログの取得に失敗しました。", Message.M_ERROR); |
| 936 |
}); |
}); |
| 937 |
|
|
| 947 |
} |
} |
| 948 |
|
|
| 949 |
// maxCountが小さすぎると過去コメントが保存されないケースがあるので水増し |
// maxCountが小さすぎると過去コメントが保存されないケースがあるので水増し |
| 950 |
var maxCount:Number = Application.application.getSaveCommentMaxCount(); |
var maxCount:Number = (FlexGlobals.topLevelApplication as NNDD).getSaveCommentMaxCount(); |
| 951 |
if(maxCount < 10000){ |
if(maxCount < 10000){ |
| 952 |
maxCount = 10000; |
maxCount = 10000; |
| 953 |
} |
} |
| 1161 |
//再生ごとのリサイズが有効か? 有効でなくてもレートが指定されているか? |
//再生ごとのリサイズが有効か? 有効でなくてもレートが指定されているか? |
| 1162 |
if(this.videoInfoView.isResizePlayerEachPlay || windowSizeRatio != -1){ |
if(this.videoInfoView.isResizePlayerEachPlay || windowSizeRatio != -1){ |
| 1163 |
|
|
| 1164 |
if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){ |
if(this.windowType == PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null && this.videoDisplay.videoObject != null){ |
| 1165 |
//FLV再生か? |
//FLV再生か? |
| 1166 |
|
this.videoDisplay.videoObject.smoothing = true; |
| 1167 |
|
|
| 1168 |
if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_NICO && this.videoDisplay.videoHeight > 0){ |
if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_NICO && this.videoDisplay.videoObject.videoHeight > 0){ |
| 1169 |
|
|
| 1170 |
//動画の大きさがニコ動の表示窓より小さいとき && ウィンドウの大きさを動画に合わせる (動画の高さが0の時は読み込み終わっていないのでスキップ) |
//動画の大きさがニコ動の表示窓より小さいとき && ウィンドウの大きさを動画に合わせる (動画の高さが0の時は読み込み終わっていないのでスキップ) |
| 1171 |
var isWideVideo:Boolean = false; |
var isWideVideo:Boolean = false; |
| 1172 |
if(WIDE_MODE_ASPECT_RATIO < Number(this.videoDisplay.videoWidth)/Number(this.videoDisplay.videoHeight)){ |
if(WIDE_MODE_ASPECT_RATIO < Number(this.videoDisplay.videoObject.videoWidth)/Number(this.videoDisplay.videoObject.videoHeight)){ |
| 1173 |
// この動画は16:9だ |
// この動画は16:9だ |
| 1174 |
isWideVideo = true; |
isWideVideo = true; |
| 1175 |
trace("enable 16:9 mode"); |
trace("enable 16:9 mode"); |
| 1198 |
// resizePlayerJustVideoSize(windowSizeRatio); |
// resizePlayerJustVideoSize(windowSizeRatio); |
| 1199 |
} |
} |
| 1200 |
|
|
| 1201 |
}else if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_VIDEO && this.videoDisplay.videoHeight > 0){ |
}else if(this.videoInfoView.selectedResizeType == VideoInfoView.RESIZE_TYPE_VIDEO && this.videoDisplay.videoObject.videoHeight > 0){ |
| 1202 |
|
|
| 1203 |
//動画の大きさにウィンドウの大きさを合わせるとき(videoHeightが0の時は動画がまだ読み込まれていないのでスキップ) |
//動画の大きさにウィンドウの大きさを合わせるとき(videoHeightが0の時は動画がまだ読み込まれていないのでスキップ) |
| 1204 |
|
|
| 1205 |
videoWindowHeight = this.videoDisplay.videoHeight * ratio; |
videoWindowHeight = this.videoDisplay.videoObject.videoHeight * ratio; |
| 1206 |
videoWindowWidth = this.videoDisplay.videoWidth * ratio; |
videoWindowWidth = this.videoDisplay.videoObject.videoWidth * ratio; |
| 1207 |
|
|
| 1208 |
this.videoDisplay.setConstraintValue("bottom", 0); |
this.videoDisplay.setConstraintValue("bottom", 0); |
| 1209 |
this.videoDisplay.setConstraintValue("left", 0); |
this.videoDisplay.setConstraintValue("left", 0); |
| 1432 |
* |
* |
| 1433 |
*/ |
*/ |
| 1434 |
private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{ |
private function addVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{ |
| 1435 |
videoDisplay.addEventListener(VideoEvent.PLAYHEAD_UPDATE, videoProgressHandler); |
videoDisplay.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler); |
| 1436 |
videoDisplay.addEventListener(VideoEvent.COMPLETE, videoCompleteHandler); |
videoDisplay.addEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler); |
| 1437 |
|
videoDisplay.addEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler); |
| 1438 |
} |
} |
| 1439 |
|
|
| 1440 |
/** |
/** |
| 1443 |
* |
* |
| 1444 |
*/ |
*/ |
| 1445 |
private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{ |
private function removeVideoDisplayEventListeners(videoDisplay:VideoDisplay):void{ |
| 1446 |
if(videoDisplay.hasEventListener(VideoEvent.PLAYHEAD_UPDATE)){ |
if(videoDisplay.hasEventListener(TimeEvent.CURRENT_TIME_CHANGE)){ |
| 1447 |
videoDisplay.removeEventListener(VideoEvent.PLAYHEAD_UPDATE, videoProgressHandler); |
videoDisplay.removeEventListener(TimeEvent.CURRENT_TIME_CHANGE, currentTimeChangeEventHandler); |
| 1448 |
} |
} |
| 1449 |
if(videoDisplay.hasEventListener(VideoEvent.STATE_CHANGE)){ |
if(videoDisplay.hasEventListener(TimeEvent.DURATION_CHANGE)){ |
| 1450 |
videoDisplay.removeEventListener(VideoEvent.STATE_CHANGE, resizePlayerJustVideoSize); |
videoDisplay.removeEventListener(TimeEvent.DURATION_CHANGE, durationChangeEventHandler); |
| 1451 |
} |
} |
| 1452 |
if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){ |
if(videoDisplay.hasEventListener(VideoEvent.COMPLETE)){ |
| 1453 |
videoDisplay.removeEventListener(VideoEvent.COMPLETE, videoCompleteHandler); |
videoDisplay.removeEventListener(TimeEvent.COMPLETE, videoDisplayCompleteHandler); |
| 1454 |
|
} |
| 1455 |
|
} |
| 1456 |
|
|
| 1457 |
|
/** |
| 1458 |
|
* |
| 1459 |
|
* @param event |
| 1460 |
|
* |
| 1461 |
|
*/ |
| 1462 |
|
private function durationChangeEventHandler(event:TimeEvent):void{ |
| 1463 |
|
if(videoInfoView.isResizePlayerEachPlay){ |
| 1464 |
|
resizePlayerJustVideoSize(videoPlayer.nowRatio); |
| 1465 |
|
}else{ |
| 1466 |
|
resizePlayerJustVideoSize(); |
| 1467 |
} |
} |
| 1468 |
} |
} |
| 1469 |
|
|
| 1593 |
* @param evt |
* @param evt |
| 1594 |
* |
* |
| 1595 |
*/ |
*/ |
| 1596 |
private function videoProgressHandler(evt:VideoEvent = null):void{ |
private function currentTimeChangeEventHandler(event:TimeEvent = null):void{ |
| 1597 |
try{ |
try{ |
| 1598 |
var allSec:String="00",allMin:String="0"; |
var allSec:String="00",allMin:String="0"; |
| 1599 |
var nowSec:String="00",nowMin:String="0"; |
var nowSec:String="00",nowMin:String="0"; |
| 1600 |
|
|
| 1601 |
this.commentTimerVpos = evt.playheadTime*1000; |
this.commentTimerVpos = event.time*1000; |
| 1602 |
|
|
| 1603 |
nowSec = String(int(this.videoDisplay.playheadTime%60)); |
nowSec = String(int(this.videoDisplay.currentTime%60)); |
| 1604 |
nowMin = String(int(this.videoDisplay.playheadTime/60)); |
nowMin = String(int(this.videoDisplay.currentTime/60)); |
| 1605 |
|
|
| 1606 |
allSec = String(int(this.videoDisplay.totalTime%60)); |
allSec = String(int(this.videoDisplay.duration%60)); |
| 1607 |
allMin = String(int(this.videoDisplay.totalTime/60)); |
allMin = String(int(this.videoDisplay.duration/60)); |
| 1608 |
|
|
| 1609 |
if(nowSec.length == 1){ |
if(nowSec.length == 1){ |
| 1610 |
nowSec = "0" + nowSec; |
nowSec = "0" + nowSec; |
| 1615 |
|
|
| 1616 |
videoPlayer.videoController_under.slider_timeline.enabled = true; |
videoPlayer.videoController_under.slider_timeline.enabled = true; |
| 1617 |
videoPlayer.videoController_under.slider_timeline.minimum = 0; |
videoPlayer.videoController_under.slider_timeline.minimum = 0; |
| 1618 |
videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.totalTime; |
videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration; |
| 1619 |
if(!this.sliderChanging){ |
if(!this.sliderChanging){ |
| 1620 |
|
|
| 1621 |
this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.totalTime; |
this.videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration; |
| 1622 |
this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.totalTime; |
this.videoPlayer.videoController_under.slider_timeline.maximum = videoDisplay.duration; |
| 1623 |
videoPlayer.videoController_under.slider_timeline.value = videoDisplay.playheadTime; |
videoPlayer.videoController_under.slider_timeline.value = videoDisplay.currentTime; |
| 1624 |
|
|
| 1625 |
} |
} |
| 1626 |
videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec; |
videoPlayer.videoController_under.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec; |
| 1628 |
|
|
| 1629 |
videoPlayer.videoController.slider_timeline.enabled = true; |
videoPlayer.videoController.slider_timeline.enabled = true; |
| 1630 |
videoPlayer.videoController.slider_timeline.minimum = 0; |
videoPlayer.videoController.slider_timeline.minimum = 0; |
| 1631 |
videoPlayer.videoController.slider_timeline.maximum = videoDisplay.totalTime; |
videoPlayer.videoController.slider_timeline.maximum = videoDisplay.duration; |
| 1632 |
if(!this.sliderChanging){ |
if(!this.sliderChanging){ |
| 1633 |
videoPlayer.videoController.slider_timeline.value = videoDisplay.playheadTime; |
videoPlayer.videoController.slider_timeline.value = videoDisplay.currentTime; |
| 1634 |
} |
} |
| 1635 |
videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec; |
videoPlayer.videoController.label_time.text = nowMin + ":" + nowSec + "/" + allMin + ":" + allSec; |
| 1636 |
videoPlayer.videoController.slider_timeline.enabled = true; |
videoPlayer.videoController.slider_timeline.enabled = true; |
| 1637 |
}catch(error:Error){ |
}catch(error:Error){ |
| 1638 |
VideoDisplay(evt.currentTarget).stop(); |
VideoDisplay(event.currentTarget).stop(); |
| 1639 |
trace(error.getStackTrace()); |
trace(error.getStackTrace()); |
| 1640 |
} |
} |
| 1641 |
} |
} |
| 1645 |
* @param evt |
* @param evt |
| 1646 |
* |
* |
| 1647 |
*/ |
*/ |
| 1648 |
private function videoCompleteHandler(evt:VideoEvent = null):void{ |
private function videoDisplayCompleteHandler(evt:TimeEvent = null):void{ |
| 1649 |
|
|
| 1650 |
if(movieEndTimer != null){ |
if(movieEndTimer != null){ |
| 1651 |
movieEndTimer.stop(); |
movieEndTimer.stop(); |
| 1858 |
allSec = String(int(mc.totalFrames/swfFrameRate%60)); |
allSec = String(int(mc.totalFrames/swfFrameRate%60)); |
| 1859 |
allMin = String(int(mc.totalFrames/swfFrameRate/60)); |
allMin = String(int(mc.totalFrames/swfFrameRate/60)); |
| 1860 |
}else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){ |
}else if(this.windowType==PlayerController.WINDOW_TYPE_FLV && this.videoDisplay != null){ |
| 1861 |
allSec = String(int(videoDisplay.totalTime%60)); |
allSec = String(int(videoDisplay.duration%60)); |
| 1862 |
allMin = String(int(videoDisplay.totalTime/60)); |
allMin = String(int(videoDisplay.duration/60)); |
| 1863 |
} |
} |
| 1864 |
if(allSec.length == 1){ |
if(allSec.length == 1){ |
| 1865 |
allSec = "0" + allSec; |
allSec = "0" + allSec; |
| 2152 |
trace(seekTime); |
trace(seekTime); |
| 2153 |
if(this.windowReady){ |
if(this.windowReady){ |
| 2154 |
if((new Date().time)-lastSeekTime > 1000){ |
if((new Date().time)-lastSeekTime > 1000){ |
| 2155 |
if((videoDisplay != null && videoDisplay.initialized && videoDisplay.totalTime > 0) || (swfLoader != null && swfLoader.initialized)){ |
if((videoDisplay != null && videoDisplay.initialized && videoDisplay.duration > 0) || (swfLoader != null && swfLoader.initialized)){ |
| 2156 |
|
|
| 2157 |
|
|
| 2158 |
trace("seekStart:" + seekTime); |
trace("seekStart:" + seekTime); |
| 2166 |
this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = 0; |
this.videoPlayer.videoInfoView.dataGrid_comment.verticalScrollPosition = 0; |
| 2167 |
|
|
| 2168 |
if(this.windowType == PlayerController.WINDOW_TYPE_FLV){ |
if(this.windowType == PlayerController.WINDOW_TYPE_FLV){ |
| 2169 |
videoDisplay.playheadTime = seekTime; |
videoDisplay.seek(seekTime); |
| 2170 |
commentTimerVpos = seekTime*1000; |
commentTimerVpos = seekTime*1000; |
| 2171 |
}else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){ |
}else if(this.windowType == PlayerController.WINDOW_TYPE_SWF){ |
| 2172 |
mc.gotoAndPlay(int(seekTime)); |
mc.gotoAndPlay(int(seekTime)); |
| 3243 |
if(!file.exists){ |
if(!file.exists){ |
| 3244 |
Alert.show(Message.M_FILE_NOT_FOUND_REFRESH + "\n" + file.nativePath, Message.M_ERROR); |
Alert.show(Message.M_FILE_NOT_FOUND_REFRESH + "\n" + file.nativePath, Message.M_ERROR); |
| 3245 |
logManager.addLog(Message.M_FILE_NOT_FOUND_REFRESH + "\n" + file.nativePath); |
logManager.addLog(Message.M_FILE_NOT_FOUND_REFRESH + "\n" + file.nativePath); |
| 3246 |
Application.application.activate(); |
FlexGlobals.topLevelApplication.activate(); |
| 3247 |
return; |
return; |
| 3248 |
} |
} |
| 3249 |
|
|
| 3300 |
if(mailAddress == "" || password == ""){ |
if(mailAddress == "" || password == ""){ |
| 3301 |
Alert.show("ニコニコ動画にログインしてください。", Message.M_ERROR); |
Alert.show("ニコニコ動画にログインしてください。", Message.M_ERROR); |
| 3302 |
logManager.addLog("ニコニコ動画にログインしてください。"); |
logManager.addLog("ニコニコ動画にログインしてください。"); |
| 3303 |
Application.application.activate(); |
FlexGlobals.topLevelApplication.activate(); |
| 3304 |
return; |
return; |
| 3305 |
} |
} |
| 3306 |
|
|
| 3379 |
|
|
| 3380 |
Alert.show("ストリーミング再生中に予期せぬ例外が発生しました。\nError:" + e, Message.M_ERROR); |
Alert.show("ストリーミング再生中に予期せぬ例外が発生しました。\nError:" + e, Message.M_ERROR); |
| 3381 |
logManager.addLog("ストリーミング再生中に予期せぬ例外が発生しました。\nError:" + e + ":" + e.getStackTrace()); |
logManager.addLog("ストリーミング再生中に予期せぬ例外が発生しました。\nError:" + e + ":" + e.getStackTrace()); |
| 3382 |
Application.application.activate(); |
FlexGlobals.topLevelApplication.activate(); |
| 3383 |
nnddDownloaderForStreaming.close(true, true); |
nnddDownloaderForStreaming.close(true, true); |
| 3384 |
nnddDownloaderForStreaming = null; |
nnddDownloaderForStreaming = null; |
| 3385 |
|
|
| 3394 |
videoPlayer.setControllerEnable(true); |
videoPlayer.setControllerEnable(true); |
| 3395 |
Alert.show(url + "を再生できませんでした。\n" + error, Message.M_ERROR); |
Alert.show(url + "を再生できませんでした。\n" + error, Message.M_ERROR); |
| 3396 |
logManager.addLog("再生できませんでした:url=[" + url + "]\n" + error.getStackTrace()); |
logManager.addLog("再生できませんでした:url=[" + url + "]\n" + error.getStackTrace()); |
| 3397 |
Application.application.activate(); |
FlexGlobals.topLevelApplication.activate(); |
| 3398 |
} |
} |
| 3399 |
} |
} |
| 3400 |
|
|
| 3523 |
*/ |
*/ |
| 3524 |
public function loadPlayListSummry():void{ |
public function loadPlayListSummry():void{ |
| 3525 |
// playListManager.readPlayListSummary(libraryManager.playListDir); |
// playListManager.readPlayListSummary(libraryManager.playListDir); |
| 3526 |
(Application.application as NNDD).updatePlayListSummery(); |
(FlexGlobals.topLevelApplication as NNDD).updatePlayListSummery(); |
| 3527 |
} |
} |
| 3528 |
|
|
| 3529 |
/** |
/** |
| 3533 |
*/ |
*/ |
| 3534 |
public function loadPlayList(index:int = -1):void{ |
public function loadPlayList(index:int = -1):void{ |
| 3535 |
// playListManager.getPlay(index); |
// playListManager.getPlay(index); |
| 3536 |
(Application.application as NNDD).updatePlayList(index); |
(FlexGlobals.topLevelApplication as NNDD).updatePlayList(index); |
| 3537 |
} |
} |
| 3538 |
|
|
| 3539 |
/** |
/** |
| 3564 |
|
|
| 3565 |
playListManager.addNNDDVideos(index, videoArray, 0); |
playListManager.addNNDDVideos(index, videoArray, 0); |
| 3566 |
|
|
| 3567 |
(Application.application as NNDD).updatePlayList(index); |
(FlexGlobals.topLevelApplication as NNDD).updatePlayList(index); |
| 3568 |
(Application.application as NNDD).updatePlayListSummery(); |
(FlexGlobals.topLevelApplication as NNDD).updatePlayListSummery(); |
| 3569 |
|
|
| 3570 |
return title; |
return title; |
| 3571 |
} |
} |
| 3590 |
|
|
| 3591 |
playListManager.updatePlayList(title, vector); |
playListManager.updatePlayList(title, vector); |
| 3592 |
|
|
| 3593 |
(Application.application as NNDD).updatePlayListSummery(); |
(FlexGlobals.topLevelApplication as NNDD).updatePlayListSummery(); |
| 3594 |
(Application.application as NNDD).updatePlayList(index); |
(FlexGlobals.topLevelApplication as NNDD).updatePlayList(index); |
| 3595 |
|
|
| 3596 |
} |
} |
| 3597 |
} |
} |
| 3679 |
|
|
| 3680 |
if(videoId != null){ |
if(videoId != null){ |
| 3681 |
var video:NNDDVideo = new NNDDVideo(WatchVideoPage.WATCH_VIDEO_PAGE_URL + videoId, this.videoPlayer.title); |
var video:NNDDVideo = new NNDDVideo(WatchVideoPage.WATCH_VIDEO_PAGE_URL + videoId, this.videoPlayer.title); |
| 3682 |
Application.application.addDownloadListForInfoView(video); |
(FlexGlobals.topLevelApplication as NNDD).addDownloadListForInfoView(video); |
| 3683 |
logManager.addLog("InfoViewからDLリストへ追加:" + video.getDecodeUrl()); |
logManager.addLog("InfoViewからDLリストへ追加:" + video.getDecodeUrl()); |
| 3684 |
}else{ |
}else{ |
| 3685 |
Alert.show("動画IDが見つからないため、DLリストに追加できませんでした。", Message.M_ERROR); |
Alert.show("動画IDが見つからないため、DLリストに追加できませんでした。", Message.M_ERROR); |
| 3704 |
*/ |
*/ |
| 3705 |
public function addMyList(myListId:String):void{ |
public function addMyList(myListId:String):void{ |
| 3706 |
var videoTitle:String = videoPlayer.title; |
var videoTitle:String = videoPlayer.title; |
| 3707 |
|
var videoId:String = PathMaker.getVideoID(videoTitle); |
| 3708 |
|
|
| 3709 |
logManager.addLog("***マイリストへの追加***"); |
if(PlayerMylistAddr.instance.isAdding){ |
| 3710 |
|
PlayerMylistAddr.instance.addMyList(this.mailAddress, this.password, myListId, videoId, videoTitle); |
|
if(this._myListAdder == null){ |
|
|
|
|
|
if(myListId == null || myListId == ""){ |
|
|
Alert.show("マイリストが選択されていません。", Message.M_ERROR); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
Application.application.activate(); |
|
|
return; |
|
|
} |
|
|
if(this.mailAddress == null || this.mailAddress == "" || this.password == null || this.password == ""){ |
|
|
Alert.show("ニコニコ動画にログインできません。ユーザー名とパスワードを設定してください。"); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
Application.application.activate(); |
|
|
return; |
|
|
} |
|
|
var videoId:String = PathMaker.getVideoID(videoTitle); |
|
|
if(videoId == null){ |
|
|
Alert.show("動画のIDが取得できませんでした。動画を再生し直した後、もう一度試してみてください。", Message.M_ERROR); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
Application.application.activate(); |
|
|
return; |
|
|
} |
|
|
|
|
|
this._myListAdder = new NNDDMyListAdder(this.logManager); |
|
|
|
|
|
this._myListAdder.addEventListener(NNDDMyListAdder.ADD_MYLIST_SUCESS, function(event:Event):void{ |
|
|
logManager.addLog("次の動画をマイリストに追加:" + videoTitle); |
|
|
logManager.addLog("***マイリストへの追加成功***"); |
|
|
var text:String = "次の動画をマイリストに追加しました。\n" + videoTitle; |
|
|
var alert:Alert = Alert.show(text, Message.M_MESSAGE); |
|
|
var timer:Timer = new Timer(1000, 5); |
|
|
timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(event:TimerEvent):void{ |
|
|
if(alert != null && alert.isPopUp){ |
|
|
PopUpManager.removePopUp(alert); |
|
|
} |
|
|
}); |
|
|
_myListAdder.close(); |
|
|
_myListAdder = null; |
|
|
}); |
|
|
this._myListAdder.addEventListener(NNDDMyListAdder.ADD_MYLIST_DUP, function(event:Event):void{ |
|
|
logManager.addLog("次の動画はすでにマイリストに登録済:" + videoTitle); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
Alert.show("次の動画は既にマイリストに追加されています。\n" + videoTitle, Message.M_MESSAGE); |
|
|
_myListAdder.close(); |
|
|
_myListAdder = null; |
|
|
}); |
|
|
this._myListAdder.addEventListener(NNDDMyListAdder.ADD_MYLIST_NOT_EXIST, function(event:Event):void{ |
|
|
logManager.addLog("次の動画は存在しない:" + videoTitle); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
Alert.show("次の動画をマイリストに追加しようとしましたが、動画が存在しませんでした。\n" + videoTitle, Message.M_MESSAGE); |
|
|
_myListAdder.close(); |
|
|
_myListAdder = null; |
|
|
}); |
|
|
this._myListAdder.addEventListener(NNDDMyListAdder.ADD_MYLSIT_FAIL, function(event:ErrorEvent):void{ |
|
|
logManager.addLog("マイリストへの登録に失敗:" + videoTitle + ":" + event); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
Alert.show("マイリストへの登録に失敗\n" + event, Message.M_ERROR); |
|
|
Application.application.activate(); |
|
|
_myListAdder.close(); |
|
|
_myListAdder = null; |
|
|
}); |
|
|
this._myListAdder.addEventListener(NNDDMyListAdder.LOGIN_FAIL, function(event:Event):void{ |
|
|
logManager.addLog("マイリストへの登録に失敗:" + videoTitle + ":" + event); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
Alert.show("マイリストへの登録に失敗\n" + event, Message.M_ERROR); |
|
|
Application.application.activate(); |
|
|
_myListAdder.close(); |
|
|
_myListAdder = null; |
|
|
}); |
|
|
this._myListAdder.addEventListener(NNDDMyListAdder.GET_MYLISTGROUP_FAIL, function(event:Event):void{ |
|
|
logManager.addLog("マイリストへの登録に失敗:" + videoTitle + ":" + event); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
Alert.show("マイリストへの登録に失敗\n" + event, Message.M_ERROR); |
|
|
Application.application.activate(); |
|
|
_myListAdder.close(); |
|
|
_myListAdder = null; |
|
|
}); |
|
|
|
|
|
_myListAdder.addMyList("http://www.nicovideo.jp/watch/" + videoId, myListId, this.mailAddress, this.password); |
|
|
|
|
| 3711 |
}else{ |
}else{ |
| 3712 |
|
PlayerMylistAddr.instance.close(); |
|
logManager.addLog("マイリストへの登録をキャンセル:" + videoTitle); |
|
|
logManager.addLog("***マイリストへの追加失敗***"); |
|
|
|
|
|
try{ |
|
|
_myListAdder.close(); |
|
|
}catch(error:Error){ |
|
|
trace(error.getStackTrace()); |
|
|
} |
|
|
_myListAdder = null; |
|
| 3713 |
} |
} |
| 3714 |
|
|
| 3715 |
} |
} |
| 3716 |
|
|
|
|
|
| 3717 |
/** |
/** |
| 3718 |
* |
* |
| 3719 |
* @param isVisible |
* @param isVisible |
| 3725 |
} |
} |
| 3726 |
} |
} |
| 3727 |
|
|
|
/** |
|
|
* 現在再生しているコメントに日付情報を付加して退避します。 |
|
|
* |
|
|
*/ |
|
|
public function saveComment():void{ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
| 3728 |
|
|
| 3729 |
/** |
/** |
| 3730 |
* |
* |