Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
hello uni-app x
提交
f4879463
H
hello uni-app x
项目概览
DCloud
/
hello uni-app x
通知
5995
Star
90
Fork
162
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
18
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello uni-app x
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
18
Issue
18
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f4879463
编写于
8月 31, 2023
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新 示例项目 drop-card 简化移动卡片位置(帧动画)的函数逻辑
上级
9c1b991c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
27 addition
and
34 deletion
+27
-34
pages/template/drop-card/card/card.uvue
pages/template/drop-card/card/card.uvue
+27
-34
未找到文件。
pages/template/drop-card/card/card.uvue
浏览文件 @
f4879463
...
@@ -56,19 +56,19 @@
...
@@ -56,19 +56,19 @@
screenHeight = e.screenHeight;
screenHeight = e.screenHeight;
}
}
})
})
// TODO 需要延迟设置才能生效
// TODO 需要延迟设置才能生效
setTimeout(()=>{
setTimeout(()=>{
this.setINodeStyle('card','height', screenHeight * 0.7 + 'px');
this.setINodeStyle('card','height', screenHeight * 0.7 + 'px');
this.setINodeStyle('card-img','height', screenHeight * 0.7 + 'px');
this.setINodeStyle('card-img','height', screenHeight * 0.7 + 'px');
this.initCardStyle()
this.initCardStyle()
},200)
},200)
uni.$on('uni-drop-card-float',()=>{
uni.$on('uni-drop-card-float',()=>{
this.floatCount ++
this.floatCount ++
this.initCardStyle()
this.initCardStyle()
})
})
},
},
methods: {
methods: {
initCardStyle(){
initCardStyle(){
...
@@ -119,7 +119,7 @@
...
@@ -119,7 +119,7 @@
return // 浮动动画进行中
return // 浮动动画进行中
}
}
floating = true
floating = true
// 设置释放之后飘走的方向 0回到坐标中心 1向右 2向左
// 设置释放之后飘走的方向 0回到坐标中心 1向右 2向左
let k:number = 0;
let k:number = 0;
if (this.x > screenWidth / 10 ) {
if (this.x > screenWidth / 10 ) {
...
@@ -127,60 +127,53 @@
...
@@ -127,60 +127,53 @@
}else if(this.x < screenWidth * -1 / 10){
}else if(this.x < screenWidth * -1 / 10){
k = -1
k = -1
}
}
function cardTo(x:number,y:number,callback: () => void,s:number = 10){
function cardTo(x:number,y:number,callback: () => void,speed:number = 10){
// console.log('s',s);
// console.log('--cardTo---',x,y);
let interval:number = 0
let interval:number = 0
let
_k
:number = 1
let
acceleration
:number = 1
interval = setInterval(()=>{
interval = setInterval(()=>{
// 加速度
// 加速度
_k
+= 0.2
acceleration
+= 0.2
const dx = x - this.x
const dx = x - this.x
if(this.x.toInt() != x){
if(Math.abs(dx) < 1){
this.x += dx/s*_k
this.x = x
// console.log('dx/s*_k',dx/s*_k)
}else{
if(Math.abs(dx) < 3){
this.x += dx/speed*acceleration
this.x = x
}
}
}
const dy = y - this.y
const dy = y - this.y
if(this.y.toInt() != y){
if(Math.abs(dy) < 1){
this.y += dy/s*_k
this.y = y
// console.log('dy/s*_k',dy/s*_k)
}else{
if(Math.abs(dy) < 3){
this.y += dy/speed*acceleration
this.y = y
}
}
}
// console.log('this.x',this.x,'this.y',this.y);
// console.log('x',x,'y',y);
this.moveCard()
this.moveCard()
if( this.x
.toInt() == x.toInt() && this.y.toInt() == y.toInt()
){
if( this.x
== x && this.y == y
){
clearInterval(interval)
clearInterval(interval)
callback()
callback()
}
}
},16)
},16)
}
}
if(k.toInt() != 0){
if(k.toInt() != 0){
cardTo(k * screenWidth * 1.3, this.y * 3,()=>{
cardTo(k * screenWidth * 1.3, this.y * 3,()=>{
// 状态图标变回透明
// 状态图标变回透明
this.setINodeStyle("state-icon-like",'opacity', 0)
this.setINodeStyle("state-icon-like",'opacity', 0)
this.setINodeStyle("state-icon-dislike",'opacity', 0)
this.setINodeStyle("state-icon-dislike",'opacity', 0)
// 设置为透明,防止飘回时因为 margin-top 太高,露出来
// 设置为透明,防止飘回时因为 margin-top 太高,露出来
this.setINodeStyle("card",'opacity', 0)
this.setINodeStyle("card",'opacity', 0)
setTimeout(()=>{
setTimeout(()=>{
this.setINodeStyle("card",'opacity', 1)
this.setINodeStyle("card",'opacity', 1)
},300)
},300)
// 执行卡片飘动后事件,注意uni.$emit是全局事件。其他卡片也会执行
// 执行卡片飘动后事件,注意uni.$emit是全局事件。其他卡片也会执行
uni.$emit('uni-drop-card-float',null)
uni.$emit('uni-drop-card-float',null)
floating = false
floating = false
},8)
},8)
}else{
}else{
const _x:number = this.x
const _x:number = this.x
const _y:number = this.y
const _y:number = this.y
cardTo( (_x*-0.05).toInt() , (_y*-0.05).toInt() ,()=>{
cardTo( (_x*-0.05).toInt() , (_y*-0.05).toInt() ,()=>{
...
@@ -246,4 +239,4 @@
...
@@ -246,4 +239,4 @@
box-shadow: 0 0 1px #EBEBEB;
box-shadow: 0 0 1px #EBEBEB;
opacity: 0;
opacity: 0;
}
}
</style>
</style>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录