Flex 放大镜效果实现代码

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
layout="vertical"
verticalScrollPolicy="off"
horizontalScrollPolicy="off"
backgroundColor="#FFFFFF"
backgroundGradientColors="#FFFFFF,#FFFFFF"
applicationComplete="onApplicationComplete();"
xmlns:mx="http://www.adobe.com/2006/mxml"
viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
[Embed(source="assets/magnify.pbj", mimeType="application/octet-stream")]
private var shaderObj:Class;
private var shader:Shader;
private var shaderFilter:ShaderFilter;
/**
* Initialize the shader
*/
private function onApplicationComplete():void
{
// create the shader
shader = new Shader( new shaderObj() );
shader.data.center.value = [image.width/2, image.height/2];
setShader();
// setup event listeners
stage.addEventListener( Event.ENTER_FRAME, onEnterFrame, false, 0, true );
}
/**
* Each frame, only reapply the filter if necessary
*/
private function onEnterFrame( event:Event ):void
{
setShader();
}
/**
* Update all the shader's properties, create a new ShaderFilter,
* and reapply it to the image
*/
private function setShader():void
{
var centerX:Number = image.mouseX;
var centerY:Number = image.mouseY;
if( centerX < 0 || centerY < 0 || centerX > image.width || centerY > image.height )
{
var currentX:Number = shader.data.center.value[0];
var currentY:Number = shader.data.center.value[1]
centerX = currentX + ((image.width / 2)-currentX) / 2;
centerY = currentY + ((image.height / 2)-currentY) / 2;
}
shader.data.center.value = [centerX, centerY];
shader.data.innerRadius.value = [innerRadiusSlider.value];
shader.data.outerRadius.value = [outerRadiusSlider.value];
shader.data.magnification.value = [magnificationSlider.value];
shaderFilter = new ShaderFilter( shader );
image.filters = [shaderFilter];
}
]]>
</mx:Script>
<mx:Form>
<mx:FormItem label="Inner Radius">
<mx:HSlider
id="innerRadiusSlider"
minimum="0"
maximum="200"
value="50"
liveDragging="true" />
</mx:FormItem>
<mx:FormItem label="Outer Radius">
<mx:HSlider
id="outerRadiusSlider"
minimum="0"
maximum="200"
value="100"
liveDragging="true" />
</mx:FormItem>
<mx:FormItem label="Magnification">
<mx:HSlider
id="magnificationSlider"
minimum="1"
maximum="50"
value="4"
liveDragging="true" />
</mx:FormItem>
</mx:Form>
<mx:Image
id="image"
source="assets/YellowFlowers.jpg" />
</mx:Application>

(0)

相关推荐

  • Flex 放大镜效果实现代码

    复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <mx:Application layout="vertical" verticalScrollPolicy="off" horizontalScrollPolicy="off" backgroundColor="#FFFFFF" backgroundGradientCo

  • 原生JS实现的放大镜效果实例代码

    这是我用原生js写的放大镜效果,与各种各样的框架技术相比,我喜欢使用原生的js,在这里,想和大家一起谈谈原生和框架技术的理解与个人喜好. <!DOCTYPE HTML> <html> <head> <title>js放大镜效果</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <style

  • jQuery实现放大镜效果实例代码

    在没给大家做详细文字说明之前,先给大家分享一段简单的jquery实现放大镜效果代码,需要的朋友可以直接拿去代码. $(function(){ var mouseX = 0; //鼠标移动的位置X var mouseY = 0; //鼠标移动的位置Y var maxLeft = 0; //最右边 var maxTop = 0; //最下边 var markLeft = 0; //放大镜移动的左部距离 var markTop = 0; //放大镜移动的顶部距离 var perX = 0; //移动的

  • JavaScript实现放大镜效果代码示例

    JavaScript实现放大镜效果: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title&

  • js实现放大镜效果的思路与代码

    本文实例为大家分享了js实现放大镜效果的具体代码,供大家参考,具体内容如下 样式展示: 思路 先准备两张图片,一张小图,一张大图,并且两张图片有一个整数比值 在小图片的上方设置一个放大镜样式,背景设为透明色即可 大图片外边套一个父元素,超出父元素隐藏,大小为只能容纳你的放大部分即可 父元素与放大镜样式的比值=大图与小图的比值 在小图片上进行鼠标移动时获取鼠标的坐标,得到鼠标当前处于小图片上的坐标 根据对应的比例求出大图片的坐标并移动大图片令放大部分处于父元素可见范围 代码 1.html部分 <d

  • vue3实现淘宝放大镜效果的示例代码

    目录 实现效果 实现思路 完成小图盒子.遮罩.大图盒子布局 实现鼠标移动到小图盒子显示遮罩和大图盒子 实现鼠标移动遮罩在小图盒子移动 完整代码 总结 实现效果 实现思路 我们实现动图的淘宝放大镜的效果需要4步. 1.完成小图盒子.遮罩.大图盒子布局2.实现鼠标移动到小图盒子显示遮罩和大图盒子3.实现鼠标移动遮罩在小图盒子移动4.实现遮罩的移动范围不能超出小图盒子,且移动时带动大图图片移动 完成小图盒子.遮罩.大图盒子布局 我的布局小图盒子包裹图片.遮罩.大图盒子.小图盒子为相对定位.遮罩.大图盒

  • 一个手写的vue放大镜效果

    组件使用less,请确保已安装loader 本组件为放大镜组件,传参列表为: •width: 必传,设置放大镜的宽高(正方形),放大区域等同,放大倍数为2倍 •picList:必传,传入图片列表 使用示例: script: import mirror from 'xx/mirror' export default { components:{ mirror }, data(){ return { width:300, picList:[ xxxxxx, xxxxxx ], } } } html:

  • 用js实现放大镜效果

    本文实例为大家分享了js实现放大镜效果的具体代码,供大家参考,具体内容如下 该放大区域用背景图片放大 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">

  • vue实现tab切换的放大镜效果

    本文实例为大家分享了vue实现tab切换的放大镜效果的具体代码,供大家参考,具体内容如下 废话不多说先看效果图 1.我这里并没有加遮罩层,如有需要请自行加上 2.图片建议使用4k高清图片,不然放大后模糊,影响观看心情 3.不用拘泥于样式,关注实现原理即可 4.可能我的方法并不简便,但是也是一种思路,请大家参考 实现原理 第一肯定需要vue.js 第二需要两张图片 左边为现实图片,右边放大后的效果图其实一直存在,只不过鼠标移入现实,鼠标移出消失 放大的图片并不是真正的放大,而是在img标签外套了一

  • 如何利用vue3实现放大镜效果实例详解

    目录 前言 一.封装的意义 二.如何封装? 1.  准备 2.  开始封装 3. 使用 三. 效果演示 总结 前言 逛购物网站的时候,想必大家都见过鼠标放到商品上,会有一个放大的效果.今天我们就自己动手封装一个放大镜效果的全局组件,一起来看下吧~ 一.封装的意义 从技术角度 通过vue插件方式封装为全局组件,整个项目其他位置也可以使用,且使用方便 模块化开发思想,一个模块实现一个功能 用户角度 可以带来更好的浏览体验 可以看到商品的细节 二.如何封装? 1.  准备 需要用到@vueuse/co

随机推荐