智能小程序 Ray 开发实践——视图容器组件 MovableArea 和 MovableView 介绍

MovableArea

MovableView 的可移动区域。

导入

import { MovableArea } from '@ray-js/ray';

属性说明

属性类型默认值必填说明支持平台
scaleAreabooleanfalse当里面的 MovableView 设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个 MovableAreaWeb

👉 立即免费领取开发资源,体验涂鸦 MiniApp 小程序开发。

 

MovableView

可移动的视图容器,在页面中可以拖拽滑动。MovableView 必须在 movable-area 组件中,并且必须是直接子节点,否则不能移动。

导入

import { MovableView } from '@ray-js/ray';

属性说明

属性名类型默认值必填说明支持平台
directionstringnoneMovableView 的移动方向,属性值有 all、vertical、horizontal、noneWeb
inertiabooleanfalseMovableView 是否带有惯性Web
outOfBoundsbooleanfalse超过可移动区域后,movable-view 是否还可以移动Web
xnumber0定义 x 轴方向的偏移,如果 x 的值不在可移动范围内,会自动移动到可移动范围。改变 x 的值会触发动画Web
ynumber0定义 y 轴方向的偏移,如果 y 的值不在可移动范围内,会自动移动到可移动范围。改变 y 的值会触发动画Web
dampingnumber20阻尼系数,用于控制 x 或 y 改变时的动画和过界回弹的动画,值越大移动越快Web
frictionnumber2摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于 0,否则会被设置成默认值Web
disabledbooleanfalse是否禁用Web
scalebooleanfalse是否支持双指缩放,默认缩放手势生效区域是在 MovableView 内Web
scaleMinnumber0.5定义缩放倍数最小值Web
scaleMaxnumber10定义缩放倍数最大值Web
scaleValuenumber1定义缩放倍数,取值范围为 0.5 - 10Web
animationbooleantrue是否使用动画Web
onChangeeventhandle拖动过程中触发的事件,event.detail = {x, y, source}Web
onScaleeventhandle缩放过程中触发的事件,event.detail = {x, y, scale}Web

onChange 返回的 source 表示产生移动的原因

说明
touch拖动
touchOutOfBounds超出移动范围
outOfBounds超出移动范围后的回弹
friction惯性
空字符串setData

 

示例代码

  • index.module.less
.item-wrap {
  margin: 16px 0;
  padding: 10px 0;
  border-bottom: 1px solid var(--ty-native-checkbox-border);
}
 
.area-wrap {
  display: flex;
  justify-content: space-around;
}
 
.area {
  flex: none;
  height: 200px;
  width: 200px;
  margin: 10px;
  background-color: #ccc;
  overflow: hidden;
}
 
.block {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  width: 50px;
  background: var(--ty-native-primary-color);
  color: #fff;
}
 
.btn-line {
  text-align: center;
}
 
.btn-line .btn {
  display: inline-block;
  width: 240px;
}
 
.btn-line .sec-btn {
  margin-top: 10px;
}

基本使用
import React, { useState } from 'react';
import {
  View,
  MovableView,
  MovableArea,
  Text,
  Button,
} from '@ray-js/components';
 
import './style.less';
 
export default function () {
  const [x, setX] = useState(0);
  const [y, setY] = useState(0);
 
  const moveFn = () => {
    setX(30);
    setY(30);
  };
  const moveStep = () => {
    setX(x + 10);
    setY(y + 10);
  };
 
  return (
    <View>
      <View className="item-wrap">
        <View className="area-wrap">
          <MovableArea className="area">
            <MovableView className="block" x={x} y={y} direction="all">
              <Text>Text</Text>
            </MovableView>
          </MovableArea>
        </View>
        <View className="btn-wrap">
          <View className="btn-line">
            <Button type="primary" onClick={moveFn} className="btn">
              点击移动到(30px, 30px)
            </Button>
          </View>
          <View className="btn-line">
            <Button type="primary" onClick={moveStep} className="btn sec-btn">
              {`点击移动到(${x + 10}px, ${y + 10}px)`}
            </Button>
          </View>
        </View>
      </View>
    </View>
  );
}

👉 立即免费领取开发资源,体验涂鸦 MiniApp 小程序开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT砖家涂拉拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值