gpt4 book ai didi

javascript - 对象的不透明度 slider

转载 作者:行者123 更新时间:2023-12-01 01:53:17 25 4
gpt4 key购买 nike

我正在尝试合并一个不透明度 slider ,以便将任何选定的对象设置为根据 slider 的位置进行更改(100 表示完全可见)。我正在使用 Fabric.js 版本 1.7.22 和 jQuery 3.3.1。

我最初问这个问题并得到了一个可行的解决方案(谢谢@Durga),但意识到我使用了错误的 Fabric.js 版本。我已经查看了文档但被困住了。我在这里做错了什么?

我拥有的: http://jsfiddle.net/code4ever/srm25f9d/

var canvas = new fabric.Canvas("c");
canvas.isDrawingMode = true;

// select, draw
$("#select").click(function() {
canvas.isDrawingMode = false;
});
$("#draw").click(function() {
canvas.isDrawingMode = true;
});
var activeObject = null;
canvas.on('selection:created', function(options) {
activeObject = options.target;
$("#alpha").slider("option", "value", activeObject.opacity);
});
canvas.on('selection:updated', function(options) {
activeObject = options.target;
$("#alpha").slider("option", "value", activeObject.opacity);
});
canvas.on('selection:cleared', function(options) {
activeObject = null;
});
$("#alpha").slider({
max: 1,
min: 0,
step: 0.1,
value: 1,
slide: function(event, ui) {
activeObject && (activeObject.opacity = ui.value)
canvas.requestRenderAll();
},
stop: function(event, ui) {
canvas.requestRenderAll();
}
});
canvas {
border: solid 1px #000;
}

fieldset {
max-width: 350px;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.22/fabric.min.js"></script>
<canvas id="c" width="400" height="400"></canvas>
<br>
<button id="draw">Draw</button>
<button id="select">Select</button>
<br>
<br>
<fieldset>
<legend>Controls</legend>
<label for="alpha">Opactity</label>
<div id="alpha" name="alpha"></div>
</fieldset>

提前致谢!

最佳答案

假设您需要同时更新一个对象,那么您可以使用 FabriJs 函数 getActiveObject() 来更新不透明度:

var canvas = new fabric.Canvas("c");
canvas.isDrawingMode = true;

// select, draw
$("#select").click(function() {
canvas.isDrawingMode = false;
});
$("#draw").click(function() {
canvas.isDrawingMode = true;
});

$("#alpha").slider({
max: 1,
min: 0,
step: 0.1,
value: 1,
slide: function(event, ui) {
if (canvas.getActiveObject()){
canvas.getActiveObject().setOpacity(ui.value);
canvas.renderAll();
}
},
stop: function(event, ui) {
canvas.renderAll();
}
});

如果您需要使用多个对象,那么您需要单独循环并更改每个对象的不透明度。

关于javascript - 对象的不透明度 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51250832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com