案例效果:在屏幕中拖拽箱子

案例效果:在屏幕中拖拽箱子


在工作中最近遇到点小的知识点,现在写出一个小demo,供需要的朋友来参考

实现效果:

在这里插入图片描述


首先看见需求我们不着急做,我们先来分析一下:

  • 位置特点:拖到时,鼠标在盒子内的位置不变;盒子新的位置=新的鼠标位置-鼠标在盒子内的一开始位置;
    • 鼠标在盒子内的一开始位置 =鼠标的位置-盒子的位置(offsetLeft)
  • 执行特点鼠标落下在盒子内,在页面上进行移动,最后鼠标键弹起;完成一次拖到;开关思想
    • 鼠标落下之前,设置 开关 为 关的状态,状态:没有点击 flag = false;
    • 鼠标落下在盒子内,状态:已经点击, flag= true;
    • 在页面上进行移动
      • 条件判断:看你isClick 状态是否为点击:
        • true:移动计算;
        • false:不进行移动计算;
    • 最后鼠标键弹起:状态:恢复到没有点击, flag= false;

html部分:

<div class="p" id="box">

css部分:

* {
            margin: 0;
            padding: 0;
        }
        
        html {
            width: 100%;
        }
        
        body {
            width: 100%;
            height: 2000px;
        }
        
        .p {
            width: 600px;
            height: 300px;
            background-color: #ccc;
            overflow: hidden;
            position: absolute;
            top: 50px;
            left: 50px;
        }
//1.要获取DOM节点
    var box = document.querySelector("#box");

    //三个步骤
    //1.鼠标点下
    //谁点下?
    var x_start = 0;
    var y_start = 0;
    //我们需要有开关的思想 这个开关呢就是为了控制最后能停住在最后
    var flag = false;
    box.addEventListener('mousedown', function(e) {
        //要获取鼠标距离内边距的距左,和距上的距离
        x_start = e.pageX - box.offsetLeft;
        y_start = e.pageY - box.offsetTop;
        // console.log(x_start, y_start);
        flag = true;
    });
    //2.移动
    //想一想是谁移动,鼠标在盒子里面并没有移动,所以移动的是谁呢?
    document.addEventListener('mousemove', function(e) {
        //现在我们需要用新的鼠标的pageX,pageY 减去 之前已经获取到的x_start,y_start的固定值
        if (flag == true) {
            var left = e.pageX - x_start;
            var top = e.pageY - y_start;
            //新的盒子距左,距上的距离已经求出,现在赋值就可以了
            box.style.top = `${top}px`;
            box.style.left = `${left}px`;
        }
    });

    //3.鼠标松开
    //最后一步,谁来操作,鼠标
    box.addEventListener('mouseup', function() {
        flag = false;
    });

还有疑问的小伙伴,可以在下方评论,我会及时解答的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Unity 新建屏幕的方法如下: 1. 在 Unity 编辑器打开你的项目。 2. 在菜单栏选择 "GameObject",然后选择 "UI" 下的 "Canvas"。这会在你的场景创建一个画布。 3. 右键单击画布,然后选择 "UI" 下的 "Image"。这会在你的画布上创建一张图片。 4. 选择图片,然后在 "Inspector" 面板调整其大小和位置。你也可以使用 "Rect Transform" 面板来调整图片的大小和位置。 5. 在图片上添加文本、按钮或其他 UI 元素,以便在游戏使用。你可以使用 "Text"、"Button" 或其他 UI 元素来实现这一点。 6. 使用 "Script" 面板添加脚本,以便在游戏控制 UI 元素的行为。 7. 使用 "Build Settings" 导出你的游戏,然后运行它以查看你创建的屏幕。 希望这些步骤能帮到你。 ### 回答2: 在Unity新建屏幕可以通过以下几个步骤完成。 1. 打开Unity编辑器并创建一个新的场景。在“Hierarchy”面板,选择“Create”->“2D Object”->“Sprite”创建一个新的2D精灵。 2. 在“Scene”视图,选择新创建的精灵并将其移动到你想要放置屏幕的位置。你可以通过在“Scene”视图动精灵来改变其位置。 3. 创建一个新的空物体来代表你的屏幕。在“Hierarchy”面板,选择“Create”->“Empty Object”来创建一个新的空物体。将其命名为“Screen”。 4. 将精灵动到“Screen”物体,以将其作为屏幕的子物体。这样可以方便地管理和控制屏幕的整体。 5. 调整屏幕的大小和布局。选择“Screen”物体,点击“Inspector”面板,你可以设置所需的大小和位置。你可以通过更改“Transform”组件的缩放值来调整大小,并修改位置来适应不同的需求。 6. 将屏幕与相机关联。在“Hierarchy”面板选择相机,并在“Inspector”面板,找到“Camera”组件的“Target Display”属性。将其设置为“Screen”。 7. 添加屏幕所需的其他组件。你可以在“Screen”物体上添加脚本或其他必要的组件,以实现屏幕的特定功能。 8. 保存场景并进行测试。点击菜单栏的“File”->“Save Scene”保存场景,然后点击“Play”按钮测试你的屏幕。 通过以上步骤,你可以在Unity轻松地创建一个新的屏幕,并对其进行调整、布局和扩展,以满足你的需求。 ### 回答3: 在Unity,创建新的屏幕涉及到以下几个步骤: 1. 创建新的场景:在Unity的Hierarchy面板,右键点击并选择"Create Empty"来创建一个新的空对象作为新的场景。然后,将其重命名为适当的名称,例如"Screen1"。 2. 设计屏幕界面:在新的场景,你可以使用Unity的UI工具来设计屏幕的界面。例如,你可以添加按钮、文本框、图片等UI元素来构建你想要的屏幕布局。可以在Canvas对象下使用UI工具。 3. 设置屏幕过渡:如果你想要实现屏幕之间的过渡效果,例如从主菜单屏幕到游戏界面屏幕的切换,你可以在场景创建一个过渡脚本,并在代码控制切换逻辑。 4. 添加逻辑和功能:在屏幕所需的逻辑和功能方面,你可以在场景的相关UI元素上添加脚本组件,以实现各种交互效果,例如按钮点击、输入框响应等。 5. 运行和测试:在Unity的场景编辑器,你可以使用Play按钮来运行和测试你的屏幕。你可以通过点击按钮、输入文本等操作来验证屏幕的功能和逻辑是否正常运行。 通过以上步骤,你就可以在Unity创建新的屏幕。但记得在屏幕切换时,适当处理资源加载、内存释放等相关问题,以确保你的屏幕在性能和用户体验上都能良好地进行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值