Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
f8cd994e
U
uni-app
项目概览
DCloud
/
uni-app
6 个月 前同步成功
通知
750
Star
38709
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
8
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
8
Issue
8
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f8cd994e
编写于
7月 19, 2024
作者:
辛宝Otto
🥊
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(x): iOS 实现 createCanvasContextAsync #3891
上级
bf2e1ac0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
174 addition
and
0 deletion
+174
-0
packages/uni-app-plus/src/x/api/dom/createCanvasContextAsync.ts
...es/uni-app-plus/src/x/api/dom/createCanvasContextAsync.ts
+173
-0
packages/uni-app-plus/src/x/api/index.ts
packages/uni-app-plus/src/x/api/index.ts
+1
-0
未找到文件。
packages/uni-app-plus/src/x/api/dom/createCanvasContextAsync.ts
0 → 100644
浏览文件 @
f8cd994e
import
{
defineAsyncApi
}
from
'
@dcloudio/uni-api
'
import
type
{
ComponentPublicInstance
}
from
'
vue
'
import
{
getCurrentPage
}
from
'
@dcloudio/uni-core
'
// type API_TYPE_CREATE_CANVAS_CONTEXT_ASYNC = typeof uni.createCanvasContext
type
CreateCanvasContextAsyncSuccessCallback
=
any
type
CreateCanvasContextAsyncFailCallback
=
any
type
CreateCanvasContextAsyncCompleteCallback
=
any
export
type
CreateCanvasContextAsyncOptions
=
{
/**
* canvas 元素的 id 属性
* @uniPlatform {
* "app": {
* "android": {
* "osVer": "5.0",
* "uniVer": "x",
* "unixVer": "4.25"
* },
* "ios": {
* "osVer": "10.0",
* "uniVer": "x",
* "unixVer": "4.25"
* }
* },
* "web": {
* "uniVer": "x",
* "unixVer": "4.25"
* }
* }
*/
id
:
string
.
IDString
/**
* 组件或页面实例
* @uniPlatform {
* "app": {
* "android": {
* "osVer": "5.0",
* "uniVer": "x",
* "unixVer": "4.25"
* },
* "ios": {
* "osVer": "10.0",
* "uniVer": "x",
* "unixVer": "4.25"
* }
* },
* "web": {
* "uniVer": "x",
* "unixVer": "4.25"
* }
* }
*/
component
?:
ComponentPublicInstance
/**
* 接口调用成功的回调函数
* @uniPlatform {
* "app": {
* "android": {
* "osVer": "5.0",
* "uniVer": "x",
* "unixVer": "4.25"
* },
* "ios": {
* "osVer": "10.0",
* "uniVer": "x",
* "unixVer": "4.25"
* }
* },
* "web": {
* "uniVer": "x",
* "unixVer": "4.25"
* }
* }
*/
success
?:
CreateCanvasContextAsyncSuccessCallback
/**
* 接口调用失败的回调函数
* @uniPlatform {
* "app": {
* "android": {
* "osVer": "5.0",
* "uniVer": "x",
* "unixVer": "4.25"
* },
* "ios": {
* "osVer": "10.0",
* "uniVer": "x",
* "unixVer": "4.25"
* }
* },
* "web": {
* "uniVer": "x",
* "unixVer": "4.25"
* }
* }
*/
fail
?:
CreateCanvasContextAsyncFailCallback
/**
* 接口调用结束的回调函数(调用成功、失败都会执行)
* @uniPlatform {
* "app": {
* "android": {
* "osVer": "5.0",
* "uniVer": "x",
* "unixVer": "4.25"
* },
* "ios": {
* "osVer": "10.0",
* "uniVer": "x",
* "unixVer": "4.25"
* }
* },
* "web": {
* "uniVer": "√",
* "unixVer": "4.25"
* }
* }
*/
complete
?:
CreateCanvasContextAsyncCompleteCallback
}
export
interface
CanvasContext
{
getContext
(
type
:
string
):
CanvasRenderingContext2D
// toBlob(callback: any): void
}
function
isVueComponent
(
comp
:
any
)
{
const
has$instance
=
typeof
comp
.
$
===
'
object
'
const
has$el
=
typeof
comp
.
$el
===
'
object
'
return
has$instance
&&
has$el
}
export
const
createCanvasContextAsync
=
defineAsyncApi
(
'
createCanvasContextAsync
'
,
(
options
:
any
,
{
resolve
,
reject
})
=>
{
const
page
=
getCurrentPage
()
as
ComponentPublicInstance
if
(
page
==
null
)
{
return
null
}
let
bodyNode
=
page
.
$el
?.
parentNode
as
UniElement
if
(
bodyNode
==
null
)
{
reject
(
'
bodyNode is null
'
)
return
null
}
if
(
!
options
.
id
)
{
reject
(
'
id is null
'
)
return
null
}
let
component
:
ComponentPublicInstance
|
null
=
null
if
(
options
.
component
&&
isVueComponent
(
options
.
component
))
{
component
=
options
.
component
const
el
=
component
!
.
$el
as
UniElement
if
(
el
!=
null
)
{
bodyNode
=
el
.
parentNode
as
UniElement
}
}
const
element
=
bodyNode
.
querySelector
(
`#
${
options
.
id
}
`
)
as
UniCanvasElement
if
(
!
element
)
{
reject
(
'
element is null
'
)
return
null
}
resolve
({
getContext
:
element
.
getContext
.
bind
(
element
),
})
}
)
packages/uni-app-plus/src/x/api/index.ts
浏览文件 @
f8cd994e
...
...
@@ -21,6 +21,7 @@ export { setNavigationBarTitle } from './navigationBar/setNavigationBarTitle'
// dom
export
{
getElementById
}
from
'
./dom/getElementById
'
export
{
createSelectorQuery
}
from
'
./dom/createSelectorQuery
'
export
{
createCanvasContextAsync
}
from
'
./dom/createCanvasContextAsync
'
// ui
export
{
pageScrollTo
}
from
'
./ui/pageScrollTo
'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录