rtmp一些状态信息详解-as连接FMS服务器报错状态汇总~~
原地址:http://help.adobe.com/zh_CN/AIR/1.5/jslr/flash/events/NetStatusEvent.html
下表说明了 code
和 level
属性可能的字符串值。
代码属性 | 级别属性 | 意义 |
---|---|---|
"NetStream.Buffer.Empty" |
"status" |
数据的接收速度不足以填充缓冲区。数据流将在缓冲区重新填充前中断,此时将发送 NetStream.Buffer.Full 消息,并且该流将重新开始播放。 |
"NetStream.Buffer.Full" |
"status" |
缓冲区已满并且流将开始播放。 |
"NetStream.Buffer.Flush" |
"status" |
数据已完成流式处理,剩余的缓冲区将被清空。 |
"NetStream.Failed" |
"error" | 仅限 Flash Media Server。发生了错误,在其它事件代码中没有列出此错误的原因。 |
"NetStream.Publish.Start" |
"status" |
已经成功发布。 |
"NetStream.Publish.BadName" |
"error" |
试图发布已经被他人发布的流。 |
"NetStream.Publish.Idle" |
"status" |
流发布者空闲而没有在传输数据。 |
"NetStream.Unpublish.Success" |
"status" |
已成功执行取消发布操作。 |
"NetStream.Play.Start" |
"status" |
播放已开始。 |
"NetStream.Play.Stop" |
"status" |
播放已结束。 |
"NetStream.Play.Failed" |
"error" |
出于此表中列出的原因之外的某一原因(例如订阅者没有读取权限),播放发生了错误。 |
"NetStream.Play.StreamNotFound" |
"error" |
无法找到传递给 play() 方法的 FLV。 |
"NetStream.Play.Reset" |
"status" |
由播放列表重置导致。 |
"NetStream.Play.PublishNotify" |
"status" |
到流的初始发布被发送到所有的订阅者。 |
"NetStream.Play.UnpublishNotify" |
"status" |
从流取消的发布被发送到所有的订阅者。 |
"NetStream.Play.InsufficientBW" |
"warning" | 仅限 Flash Media Server。客户端没有足够的带宽,无法以正常速度播放数据。 |
“NetStream.Play.FileStructureInvalid” |
"error" |
应用程序检测到无效的文件结构并且将不会尝试播放这种类型的文件。用于 AIR 和 Flash Player 9.0.115.0 及更高版本。 |
“NetStream.Play.NoSupportedTrackFound” |
"error" |
应用程序未检测到任何支持的音轨(视频、音频或数据)并且将不会尝试播放该文件。用于 AIR 和 Flash Player 9.0.115.0 及更高版本。 |
"NetStream.Play.Transition" |
"status" |
仅限 Flash Media Server。由位速率流切换而导致的到其它位置的流过渡。此代码指示用于启动流切换的 NetStream.play2() 调用的成功状态事件。如果切换失败,则服务器将改为发送 NetStream.Play.Failed 事件。用于 Flash Player 10 及更高版本。 |
"NetStream.Play.Transition" |
"status" |
仅限 Flash Media Server 3.5 和更高版本。服务器收到因位速率流切换而需要过渡到其他流的命令。此代码指示用于启动流切换的 NetStream.play2() 调用的成功状态事件。如果切换失败,则服务器将改为发送 NetStream.Play.Failed 事件。当发生流切换时,将调度带有代码“NetStream.Play.TransitionComplete”的 onPlayStatus 事件。用于 Flash Player 10 及更高版本。 |
"NetStream.Pause.Notify" |
"status" |
流已暂停。 |
"NetStream.Unpause.Notify" |
"status" |
流已恢复。 |
"NetStream.Record.Start" |
"status" |
录制已开始。 |
"NetStream.Record.NoAccess" |
"error" |
试图录制仍处于播放状态的流或客户端没有访问权限的流。 |
"NetStream.Record.Stop" |
"status" |
录制已停止。 |
"NetStream.Record.Failed" |
"error" |
尝试录制流失败。 |
"NetStream.Seek.Failed" |
"error" |
搜索失败,如果流处于不可搜索状态,则会发生搜索失败。 |
"NetStream.Seek.InvalidTime" |
"error" |
对于使用渐进式下载方式下载的视频,用户已尝试跳过到目前为止已下载的视频数据的结尾或在整个文件已下载后跳过视频的结尾进行搜寻或播放。message.details 属性包含一个时间代码,该代码指出用户可以搜寻的最后一个有效位置。 |
"NetStream.Seek.Notify" |
"status" |
搜寻操作完成。 |
"NetConnection.Call.BadVersion" |
"error" |
以不能识别的格式编码的数据包。 |
"NetConnection.Call.Failed" |
"error" |
NetConnection.call 方法无法调用服务器端的方法或命令。 |
"NetConnection.Call.Prohibited" |
"error" |
Action Message Format (AMF) 操作因安全原因而被阻止。AMF URL 与文件(其中包含调用 NetConnection.call() 方法的代码)不在同一个域中,或者 AMF 服务器没有信任文件(其中包含调用 NetConnection.call() 方法的代码)所在域的策略文件。 |
"NetConnection.Connect.Closed" |
"status" |
成功关闭连接。 |
"NetConnection.Connect.Failed" |
"error" |
连接尝试失败。 |
"NetConnection.Connect.Success" |
"status" |
连接尝试成功。 |
"NetConnection.Connect.Rejected" |
"error" |
连接尝试没有访问应用程序的权限。 |
"NetStream.Connect.Closed" |
"status" |
成功关闭 P2P 连接。info.stream 属性指示已关闭的流。 |
"NetStream.Connect.Failed" |
"error" |
P2P 连接尝试失败。info.stream 属性指示已失败的流。 |
"NetStream.Connect.Success" |
"status" |
P2P 连接尝试成功。info.stream 属性指示已成功的流。 |
"NetStream.Connect.Rejected" |
"error" |
P2P 连接尝试没有访问另一个对等方的权限。info.stream 属性指示被拒绝的流。 |
"NetConnection.Connect.AppShutdown" |
"error" |
正在关闭指定的应用程序。 |
"NetConnection.Connect.InvalidApp" |
"error" |
连接时指定的应用程序名无效。 |
"SharedObject.Flush.Success" |
"status" |
“待定”状态已解析并且 SharedObject.flush() 调用成功。 |
"SharedObject.Flush.Failed" |
"error" |
“待定”状态已解析,但 SharedObject.flush() 失败。 |
"SharedObject.BadPersistence" |
"error" |
使用永久性标志对共享对象进行了请求,但请求无法被批准,因为已经使用其它标记创建了该对象。 |
"SharedObject.UriMismatch" |
"error" |
试图连接到拥有与共享对象不同的 URI (URL) 的 NetConnection 对象。 |
如果您不断地看到有关缓冲区的错误,则请尝试使用 NetStream.bufferTime
属性更改缓冲区。
原地址:http://help.adobe.com/zh_CN/AIR/1.5/jslr/flash/events/NetStatusEvent.html
--------------------------------------------------------------------------------------------------------------
===============================================================
as连接FMS服务器报错状态汇总:
- nc = new NetConnection();
- nc.connect("rtmp://"+_root.host+"/"+_root.dir);
- //建立一个新数据流并连接到服务器
- //---------------------------显示连接状态---------------------------//
- nc.onStatus = function(info) {
- if (info.code == "NetConnection.Call.Failed") {
- trace("连接状态: "+info.code);
- trace("NetConnection.call方法调用服务器端的方法或命令失败");
- } else if (info.code == "NetConnection.Connect.AppShutdown") {
- trace("连接状态: "+info.code);
- trace("服务器端应用程序已经关闭(由于资源耗用过大等原因)或者服务器已经关闭");
- } else if (info.code == "NetConnection.Connect.Closed") {
- trace("连接状态: "+info.code);
- trace("连接中断");
- } else if (info.code == "NetConnection.Connect.Failed") {
- trace("连接状态: "+info.code);
- trace("连接失败");
- } else if (info.code == "NetConnection.Connect.InvalidApp") {
- trace("连接状态: "+info.code);
- trace("指定的应用程序名称没有找到");
- } else if (info.code == "NetConnection.Connect.Rejected") {
- trace("连接状态: "+info.code);
- trace("连接被拒绝");
- } else if (info.code == "NetConnection.Connect.Success") {
- trace("连接状态: "+info.code);
- trace("连接成功");
- }
- };
- //---------------------------与服务器通讯---------------------------//
- var returnTimeObj = new Object();
- var serverTim:Number;
- returnTimeObj.onResult = function(tim):Void {
- trace("请求的结果是影片时长:"+tim+" 秒");
- serverTim = tim;
- //将函数内部变量赋值给局部变量以便以后引用
- //如果返回时间为0表示此数据流为直播流
- };
- //client向server提交文件请求
- nc.call("getStreamLength",returnTimeObj,_root.url);
- trace("客户端主正在向服务器提交对"+_root.url+".flv文件的请求");
- //server呼叫client端
- nc.msgFromServer = function(msg) {
- trace("服务端发来信息:"+msg);
- };
- //---------------------------播放器部分---------------------------//
- in_ns = new NetStream(nc);
- _parent.mv_video.video_container.attachVideo(in_ns);
- //videoArea.attachAudio(in_ns);
- in_ns.setBufferTime();//定义缓冲时间(单位:秒)
- in_ns.play(_root.url);//开始播放
- //---------------------------sink color---------------------------//
- var btnDefaultColor:String = "0x6D6D6D";
- var btnActColor:String = "0x4EB4FF";
- var barDefaultColor:String = "0xFFFFFF";
- var barActColor:String = "0x4EB4FF";
- //这里定义了按扭的颜色可自行修改
- //---------------------------pause---------------------------//
- btn_pauseColor = new Color(btn_pause.btn_light01);
- btn_pause.onRollOver = function() {
- btn_pauseColor.setRGB(btnActColor);
- };
- btn_pause.onRollOut = function() {
- btn_pauseColor.setRGB(btnDefaultColor);
- };
- btn_pause.onRelease = function() {
- btn_pauseColor.setRGB(btnDefaultColor);
- in_ns.pause();
- };
- btn_pause.onReleaseOutside = btn_pause.onRelease;
- //---------------------------stop---------------------------//
- btn_stopColor = new Color(btn_stop.btn_light01);
- btn_stop.onRollOver = function() {
- btn_stopColor.setRGB(btnActColor);
- };
- btn_stop.onRollOut = function() {
- btn_stopColor.setRGB(btnDefaultColor);
- };
- btn_stop.onRelease = function() {
- btn_stopColor.setRGB(btnDefaultColor);
- in_ns.seek();
- in_ns.pause(true);//跳转起始时间并暂停
- };
- btn_stop.onReleaseOutside = btn_stop.onRelease;
- //---------------------------repetition---------------------------//
- var switchRepetition:Boolean = true;
- //定义为默认情况下循环播放
- btn_repetitionColor = new Color(btn_repetition.btn_light01);
- btn_repetition.onRollOver = function() {
- btn_repetitionColor.setRGB(btnActColor);
- };
- btn_repetition.onRollOut = function() {
- btn_repetitionColor.setRGB(btnDefaultColor);
- };
- btn_repetition.onRelease = function() {
- btn_repetitionColor.setRGB(btnDefaultColor);
- if (switchRepetition == true) {
- switchRepetition = false;
- btn_repetition.shape_repetition.gotoAndStop(btn_repetition.shape_repetition._totalframes);
- } else {
- switchRepetition = true;
- btn_repetition.shape_repetition.gotoAndPlay(btn_repetition.shape_repetition._currentframe+);
- }
- };
- btn_repetition.onReleaseOutside = btn_repetition.onRelease;
- in_ns.onPlayStatus = function(info) {
- if (info.code == "NetStream.Play.Complete") {
- //检查影片是否播放完毕
- if (switchRepetition == true) {
- in_ns.seek();
- in_ns.play();//如果需要循环播放便跳转起始时间并播放
- } else {
- in_ns.seek();
- in_ns.pause(true);//否则跳转起始时间并暂停(注意默认情况下是循环的)
- }
- }
- };
- //---------------------------fullscreen---------------------------//
- btn_fullscreenColor = new Color(btn_fullscreen.btn_light01);
- btn_fullscreen.onRollOver = function() {
- btn_fullscreenColor.setRGB(btnActColor);
- };
- btn_fullscreen.onRollOut = function() {
- btn_fullscreenColor.setRGB(btnDefaultColor);
- };
- btn_fullscreen.onRelease = function() {
- btn_fullscreenColor.setRGB(btnDefaultColor);
- //启动全屏(这里我没写全屏函数到底是用JS方法还是用FLASH内部函数办法根据需要你们自己看着办吧)
- };
- btn_fullscreen.onReleaseOutside = btn_fullscreen.onRelease;
- //---------------------------help---------------------------//
- btn_helpColor = new Color(btn_help.btn_light01);
- btn_help.onRollOver = function() {
- btn_helpColor.setRGB(btnActColor);
- };
- btn_help.onRollOut = function() {
- btn_helpColor.setRGB(btnDefaultColor);
- };
- btn_help.onRelease = function() {
- btn_helpColor.setRGB(btnDefaultColor);
- //弹出播放帮助页(要弹什么版权页或者说明页你们自己看着办或者你也可以播放你自己做的MC)
- };
- btn_help.onReleaseOutside = btn_help.onRelease;
- //---------------------------容错判断---------------------------//
- in_ns.onStatus = function(info) {
- if (info.code == "NetStream.Buffer.Full") {
- trace("播放状态: "+info.code);
- trace("缓冲区已满");
- btn_pause.shape_play._visible = true;
- btn_pause.shape_pause._visible = false;
- } else if (info.code == "NetStream.Buffer.Empty") {
- trace("播放状态: "+info.code);
- trace("数据缓冲区为空");
- btn_pause.shape_play._visible = false;
- btn_pause.shape_pause._visible = true;
- } else if (info.code == "NetStream.Failed") {
- trace("播放状态: "+info.code);
- trace("传输中有错误发生");
- //无需反馈
- } else if (info.code == "NetStream.Pause.Notify") {
- trace("播放状态: "+info.code);
- trace("播放暂停");
- btn_pause.shape_play._visible = false;
- btn_pause.shape_pause._visible = true;
- } else if (info.code == "NetStream.Play.Failed") {
- trace("播放状态: "+info.code);
- trace("播放出错");
- //严重错误
- } else if (info.code == "NetStream.Play.PublishNotify") {
- trace("播放状态: "+info.code);
- trace("发布开始,信息已经发送到所有订阅者");
- //无需反馈
- } else if (info.code == "NetStream.Play.Reset") {
- trace("播放状态: "+info.code);
- trace("播放列表重置");
- //无需反馈
- } else if (info.code == "NetStream.Play.Start") {
- trace("播放状态: "+info.code);
- trace("播放开始");
- btn_pause.shape_play._visible = false;
- btn_pause.shape_pause._visible = true;
- } else if (info.code == "NetStream.Play.Stop") {
- trace("播放状态: "+info.code);
- trace("播放停止");
- //无需反馈
- } else if (info.code == "NetStream.Play.StreamNotFound") {
- trace("播放状态: "+info.code);
- trace("播放的实时流或文件不存在");
- //严重错误
- } else if (info.code == "NetStream.Play.UnpublishNotify") {
- trace("播放状态: "+info.code);
- trace("发布停止,信息已经发送到所有订阅者");
- //无需反馈
- } else if (info.code == "NetStream.Publish.BadName") {
- trace("播放状态: "+info.code);
- trace("发布的数据流已经被发布");
- //无需反馈
- } else if (info.code == "NetStream.Publish.Idle") {
- trace("播放状态: "+info.code);
- trace("发布者闲置过长");
- //严重错误
- } else if (info.code == "NetStream.Publish.Start") {
- trace("播放状态: "+info.code);
- trace("发布开始");
- btn_pause.shape_play._visible = false;
- btn_pause.shape_pause._visible = true;
- } else if (info.code == "NetStream.Record.Failed") {
- trace("播放状态: "+info.code);
- trace("录制文件出错");
- //严重错误
- } else if (info.code == "NetStream.Record.NoAccess") {
- trace("播放状态: "+info.code);
- trace("没有足够的文件访问权限");
- //严重错误
- } else if (info.code == "NetStream.Record.Start") {
- trace("播放状态: "+info.code);
- trace("文件录制开始");
- //无需反馈
- } else if (info.code == "NetStream.Record.Stop") {
- trace("播放状态: "+info.code);
- trace("录制暂停");
- //无需反馈
- } else if (info.code == "NetStream.Seek.Failed") {
- trace("播放状态: "+info.code);
- trace("数据流定位出错");
- //严重错误
- } else if (info.code == "NetStream.Seek.Notify") {
- trace("播放状态: "+info.code);
- trace("数据搜索定位成功");
- btn_pause.shape_play._visible = false;
- btn_pause.shape_pause._visible = true;
- } else if (info.code == "NetStream.Unpause.Notify") {
- trace("播放状态: "+info.code);
- trace("恢复播放");
- btn_pause.shape_play._visible = false;
- btn_pause.shape_pause._visible = true;
- } else if (info.code == "NetStream.Unpublish.Success") {
- trace("播放状态: "+info.code);
- trace("停止发布");
- //无需反馈
- }
- };
- //---------------------------time progress bar---------------------------//
- time_barColor = new Color(btn_time.time_bar);
- var timeProgressAct:Boolean = false;
- var inTim:Number;
- var barLeft = btn_time.time_progress._x;
- var barRight = btn_time.time_progress._x+btn_time.time_progress._width-btn_time.time_bar._width;
- var barBottom = barTop=btn_time.time_bar._y;
- //确定slider可移动的左右及上下边界
- btn_time.time_bar.onRollOver = function() {
- time_barColor.setRGB(barActColor);
- };
- btn_time.time_bar.onRollOut = function() {
- time_barColor.setRGB(barDefaultColor);
- };
- btn_time.time_bar.onPress = function() {
- time_barColor.setRGB(barActColor);
- this.startDrag(false,barLeft,barTop,barRight,barBottom);
- timeProgressAct = true;
- };
- btn_time.time_bar.onRelease = function() {
- time_barColor.setRGB(barDefaultColor);
- this.stopDrag();
- inTim = btn_time.time_bar._x*serverTim/(barRight-barLeft);
- trace(serverTim);
- in_ns.seek(inTim);
- in_ns.play();//计算并且跳转到和滑块位置对应的播放时间
- timeProgressAct = false;
- //trace("目前移动到"+btn_time.time_bar._x+"位置");
- //trace("影片时长"+tim);
- //trace("inTime="+inTim);
- //trace("in_ns.time="+in_ns.time);
- };
- btn_time.time_bar.onReleaseOutside = btn_time.time_bar.onRelease;
- //---------------------------time container---------------------------//
- function convertTime(sec, role) {
- //定义格式化时间用的函数并且根据role的需要输出不同的数据
- var sec:Number;
- var role:String;
- sec = Math.floor(sec);
- var day = (Math.floor(sec//)<) ? ""+Math.floor(sec//) : Math.floor(sec//);
- var hour = (Math.floor(sec%(*)/)<) ? ""+Math.floor(sec%(*)/) : Math.floor(sec%(*)/);
- var minute = (Math.floor(sec%/)<) ? ""+Math.floor(sec%/) : Math.floor(sec%/);
- var second = (sec%<) ? ""+sec% : sec%;
- if ((day>) || (hour>) || (minute>) || (second>)) {
- return hour+":"+minute+":"+second;
- } else if (role != "server") {
- return "00:00:00";
- } else if (role="server") {
- return "Live";
- }
- }
- onEnterFrame = function () {
- btn_time.time_container.time_text = convertTime(in_ns.time, "client")+"/x20"+"/"+"/x20"+convertTime(serverTim, "server");
- if (timeProgressAct == false) {
- btn_time.time_bar._x = in_ns.time/serverTim*(barRight-barLeft);
- }
- if ((in_ns.bufferLength>) && (in_ns.bufferTime>=in_ns.bufferLength) && (btn_pause.shape_pause._visible == true)) {
- //trace("已经缓冲"+in_ns.bufferLength+"秒");
- //播放缓冲动画(自己搞个带LOGO的版权动画出来吧我已经把我们公司的去掉了)
- } else {
- //trace("已经缓冲"+in_ns.bufferLength+"秒");
- //隐藏缓冲动画
- }
- };
http://blog.csdn.net/swort_177/article/details/5387824
rtmp一些状态信息详解-as连接FMS服务器报错状态汇总~~的更多相关文章
- Asp.Net Core采用MailKit部署到Linux Docker连接邮件服务器报错
前段时间看文章了解到发邮件的SmtpClient已经过时了,微软官方推荐大家用其他解决方案,例如MailKit. https://docs.microsoft.com/zh-cn/dotnet/api ...
- Pycharm报错连接linux服务器报错:Could not verify `ssh-rsa` host key with fingerprint
忘记了截图,后来解决了就懒得再去重新制造错误了.大概记得是通过ssh连接linux时,报错 Could not verify `ssh-rsa` host key with fingerprint . ...
- windows连接远程服务器报错'SSH' 不是内部或外部命令,也不是可运行的程序 或批处理文件 解决方案
网上在windows下连接远程服务器的步骤如下: 1.打开cmd命令行窗口 2.输入cd ~/.ssh,进入c盘下的.ssh文件 3.输入“ssh root@远程服务器的ip地址”连接远程服务器, b ...
- Nginx RTMP 模块 nginx-rtmp-module 指令详解
译序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模块 nginx-rtmp-module 指令详解.指令Corertmp语法:rtmp { ... }上下文:根描述:保存所 ...
- HTTP协议 (六) 状态码详解
HTTP协议 (六) 状态码详解 HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了. 如果 ...
- python接口自动化(七)--状态码详解对照表(详解)
简介 我们为啥要了解状态码,从它的作用,就不言而喻了.如果不了解,我们就会像个无头苍蝇,横冲直撞.遇到问题也不知道从何处入手,就是想找别人帮忙,也不知道是找前端还是后端的工程师. 状态码的作用是:we ...
- 前端基础:HTTP 状态码详解
HTTP 状态码详解 1xx(信息类):表示接收到请求并继续处理 100 客户端应当继续发送请求.这个临时响应是用来通知客户端他的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部 ...
- 转。http,状态码详解
转自konglingbinHTTP状态码详解:https://www.cnblogs.com/klb561/p/9205867.html HTTP状态码(HTTP Status Code)是用以表示网 ...
- 详解TCP连接的“三次握手”与“四次挥手”(下)
上文链接: 详解TCP连接的"三次握手"与"四次挥手"(上) 四.TCP的四次挥手(Four-Way Wavehand) 0.前言 对于"三次握手&q ...
随机推荐
- 云设计模式-Design patterns for microservices
云设计模式 https://azure.microsoft.com/zh-cn/blog/design-patterns-for-microservices/ https://www.cnblogs. ...
- mysql 随机选取一条记录
要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1. 1 2 3 4 5 6 7 8 9 1 ...
- Machine Schedule(二分图匹配之最小覆盖点,匈牙利算法)
个人心得:二分图啥的一点都不知道,上网借鉴了下,请参考http://blog.csdn.net/thundermrbird/article/details/52231639 加上自己的了解,二分图就是 ...
- 《DSP using MATLAB》示例Example 8.19
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- BZOJ4547 Hdu5171 小奇的集合
题意 有一个大小为n的可重集S,小奇每次操作可以加入一个数a+b(a,b均属于S),求k次操作后它可获得的S的和的最大值.(数据保证这个值为非负数) 对于100%的数据,有 n<=10^5,k& ...
- json.loads(s) returns error message like this: ValueError: Invalid control character at: line 1 column 33 (char 33)
json.loads(s) returns error message like this: ValueError: Invalid control character at: line 1 colu ...
- Cmake编译opencv下载不了ffmpeg时的解决办法
- ubuntu 修改分辨率为自定义分辨率
在ubuntu14.04虚拟机上修改自定义大小的桌面屏幕分辨率,使用的命令:cvt,xrandr 0.首先查看下当前已经提供的分辨率设置:xrandr -q root@xxx:/home/xxx/De ...
- GOF23设计模式之中介者模式(mediator)
一.中介者模式概述 如果一个系统中对象之间的联系呈现网状结构,对象之间存在大量多对多的关系,导致关系及其复杂,这时可以引入一个中介者对象,使得各个对象只跟中介者对象打交道,从而将复杂的网络结构化为星型 ...
- Juicer自定义函数
首先,先写自定义的方法: function (sex) { ; ; var Range = Max - Min; var Rand = Math.random(); var res = (Min + ...