类型 函数 库 display.* 返回值 无 版本 版本 2024.3703 关键字 网络、下载、图像下载、远程图像 另请参见 network.download() network.request()
这是一种类似于 network.download() 的便捷方法,用于返回包含图像的 display 对象,以及将图像保存到文件。
display.loadRemoteImage( url, method, listener [, params], destFilename [, baseDir] [, x, y] )
字符串. 指向有效的远程 PNG 或 JPG 文件的 HTTP 请求 URL。
字符串. HTTP 方法;可接受的值为 "GET"
(默认值)或 "POST"
。
侦听器. 在 HTTP 操作完成后调用的监听器函数。它传递了一个 event
对象,其中包含以下属性
event.response
— 一个字符串,包含目标文件名。如果你正在为各种文件下载编写一个通用事件处理程序,这很有用。event.target
— 下载图像后创建的新显示对象。event.isError
— 布尔 值:网络错误时为 true
;如果不是,则为 false
。字符串. 将 HTTP 响应保存到的文件名。
常量. 将文件保存到的文件夹路径。
数字. 成功下载并保存文件后,放置新创建的显示对象时使用的 **x** 和 **y** 坐标。
params
表格是一个可选表格,用于指定要在请求中包含的自定义 HTTP 标头或正文。要指定自定义标头,请附加一个 headers
表格,该表格用字符串键指定标头值。要指定自定义正文消息,请附加一个 body
属性,该属性的字符串值为 HTTP 正文。
local params = {} params.headers = {} -- contains header values to send with your request params.body = "" -- specific body to send with your request
表格. 一个表格,用字符串键指定标头值。
字符串. 包含与请求一起发送的 HTTP 正文。
调用此函数不会返回任何内容。如果下载成功,侦听器回调将包含 display 对象 值 (event.target
)。
local function networkListener( event ) if ( event.isError ) then print ( "Network error - download failed" ) else event.target.alpha = 0 transition.to( event.target, { alpha = 1.0 } ) end print ( "event.response.fullPath: ", event.response.fullPath ) print ( "event.response.filename: ", event.response.filename ) print ( "event.response.baseDirectory: ", event.response.baseDirectory ) end display.loadRemoteImage( "https://plugins.solar2d.com/images/logo-banner.png", "GET", networkListener, "logo-banner.png", system.TemporaryDirectory, 50, 50 )
--The 'display.loadRemoteImage()' API call is a convenience method around the 'network.request()' API. --The code below is the implementation of 'display.loadRemoteImage()'. If you need to cancel your call, --feel free to use the code below and modify it to your needs. local function networkListener( event ) if ( event.isError ) then print ( "Network error - download failed" ) else event.target.alpha = 0 transition.to( event.target, { alpha = 1.0 } ) end print ( "event.response.fullPath: ", event.response.fullPath ) print ( "event.response.filename: ", event.response.filename ) print ( "event.response.baseDirectory: ", event.response.baseDirectory ) end local function remoteImageListener( self, event ) local listener = self.listener local target if ( not event.isError and event.phase == "ended" ) then target = display.newImage( self.filename, self.baseDir, self.x, self.y ) event.target = target end listener( event ) end -- display.loadRemoteImage( url, method, listener [, params], destFilename [, baseDir] [, x, y] ) display.loadRemoteImage = function( url, method, listener, ... ) local arg = { ... } local params, destFilename, baseDir, x, y local nextArg = 1 if ( "table" == type( arg[nextArg] ) ) then params = arg[nextArg] nextArg = nextArg + 1 end if ( "string" == type( arg[nextArg] ) ) then destFilename = arg[nextArg] nextArg = nextArg + 1 end if ( "userdata" == type( arg[nextArg] ) ) then baseDir = arg[nextArg] nextArg = nextArg + 1 else baseDir = system.DocumentsDirectory end if ( "number" == type( arg[nextArg] ) and "number" == type( arg[nextArg + 1] ) ) then x = arg[nextArg] y = arg[nextArg + 1] end if ( destFilename ) then local options = { x=x, y=y, filename=destFilename, baseDir=baseDir, networkRequest=remoteImageListener, listener=listener } if ( params ) then network.download( url, method, options, params, destFilename, baseDir ) else network.download( url, method, options, destFilename, baseDir ) end else print( "ERROR: no destination filename supplied to display.loadRemoteImage()" ) end end display.loadRemoteImage( "https://plugins.solar2d.com/images/logo-banner.png", "GET", networkListener, "logo-banner.png", system.TemporaryDirectory, display.contentCenterX, display.contentCenterY )