发新帖  新投票  回帖 
5947个阅读者,39条回复 | 打印 | 订阅 | 收藏
wu341

回复时间:2013-11-3 12:33

原帖由 hzqfhy 于 2013-11-3 11:27 发表

原帖由 wu341 于 2013-11-3 10:58 发表

原帖由 六月雨2011 于 2013-11-3 09:55 发表
回复whn2013:[不用调什么 库元件的,好麻烦,直接在歌词类里画个渐变矩形,就会跟着变化了,简单又实用
]


如果你很明了,写出代码,并且放哪个类里面哪个函数底下,像红叶老师一见明了的,别人家写出代码你在那指手画脚的,证明你不是菜鸟?你最好分享下

[本帖最后由 六月雨2011 于 2013-11-3 09:56 编辑]


六月雨老师啊,这人说了放在歌词类里了,这方法的确方便简单,用graphics的方法画透明渐变矩形相对说,还是比较简单。
看了上面各位的回复,看来花生潜伏的高手很多啊

对错、好坏;捡对的好的学习,错与坏当没看见。你说是吧,个见莫怪~


赞同疯子说法!用graphics的方法画透明渐变矩形当遮罩是最好的方法!
不过,whn2013说到的另一个最最简单的的方法【在播放控制元件里直接画个渐变图形,直接在LRCPlayer里定义遮罩,代码也一样(有一点小技巧)】
是不是设置重复?原本代码有遮罩遮罩歌词,再定义一个渐变遮罩去在遮罩歌词?

我想应该和设置重复没关系,如果有必要,就再遮罩几次也没什么大问题吧~
 
udhjjn

回复时间:2013-11-3 15:11
说的简单,不放出代码?还是红叶老师最伟大,有什么都会放到桌面上,相信做人也很明了好交。光说不练人人都会说!!!
红叶老师文本框晃动,鼠标放上去就停的代码能分享吗?我试过多次都不行,鼠标放上去可以停,但停后就再也不动了

[本帖最后由 udhjjn 于 2013-11-3 15:14 编辑]

 
hzqfhy

回复时间:2013-11-3 15:57
回复udhjjn :关于触动按钮和点击按钮怎么设置请参考分享帖http://bbs.voc.com.cn/topic-5571173-1-1.html

光盘图标按钮就是用的触动按钮,关闭播放器界面小三角按钮是点击按钮,两个按钮定义和设置不同的!

注意看看两个按钮部分不同的定义!

var kzk:MovieClip;//光盘按钮
var kzg:SimpleButton;//小三角按钮

kzk.addEventListener(MouseEvent.MOUSE_OVER,kzkClickHandler);//光盘按钮用的 MouseEvent.MOUSE_OVER
kzg.addEventListener(MouseEvent.CLICK,kzgClickHandler);//小三角按钮 MouseEvent.CLICK

function kzkClickHandler(event:MouseEvent):void//打开
{
kzk.visible = false;
addEventListener(Event.ENTER_FRAME,jjonEnterFrame);
stage.removeEventListener(MouseEvent.MOUSE_OVER,kzkClickHandler);//光盘按钮用的 MouseEvent.MOUSE_OVER
}

function kzgClickHandler(event:MouseEvent):void//关闭
{
kzg.visible = false;
stage.removeEventListener(MouseEvent.CLICK,kzgClickHandler);//小三角按钮 MouseEvent.CLICK
xgxsTimer .addEventListener("timer",jjtimerHandler);
xgxsTimer .start();
}

这回应该明白了?试试?

[本帖最后由 hzqfhy 于 2013-11-3 15:59 编辑]

 
udhjjn

回复时间:2013-11-3 17:06

原帖由 hzqfhy 于 2013-11-3 15:57 发表
回复udhjjn :关于触动按钮和点击按钮怎么设置请参考分享帖http://bbs.voc.com.cn/topic-5571173-1-1.html

光盘图标按钮就是用的触动按钮,关闭播放器界面小三角按钮是点击按钮,两个按钮定义和设置不同的!

注意看看两个按钮部分不同的定义!

var kzk:MovieClip;//光盘按钮
var kzg:SimpleButton;//小三角按钮

kzk.addEventListener(MouseEvent.MOUSE_OVER,kzkClickHandler);//光盘按钮用的 MouseEvent.MOUSE_OVER
kzg.addEventListener(MouseEvent.CLICK,kzgClickHandler);//小三角按钮 MouseEvent.CLICK

function kzkClickHandler(event:MouseEvent):void//打开
{
kzk.visible = false;
addEventListener(Event.ENTER_FRAME,jjonEnterFrame);
stage.removeEventListener(MouseEvent.MOUSE_OVER,kzkClickHandler);//光盘按钮用的 MouseEvent.MOUSE_OVER
}

function kzgClickHandler(event:MouseEvent):void//关闭
{
kzg.visible = false;
stage.removeEventListener(MouseEvent.CLICK,kzgClickHandler);//小三角按钮 MouseEvent.CLICK
xgxsTimer .addEventListener("timer",jjtimerHandler);
xgxsTimer .start();
}

这回应该明白了?试试?

[本帖最后由 hzqfhy 于 2013-11-3 15:59 编辑]

听老师这么一说有点懂了。原来文本框上放按钮了呀。谢老师指点,回头我试一下看看。

 
udhjjn

回复时间:2013-11-3 18:22

原帖由 hzqfhy 于 2013-11-3 15:57 发表
回复udhjjn :关于触动按钮和点击按钮怎么设置请参考分享帖http://bbs.voc.com.cn/topic-5571173-1-1.html

光盘图标按钮就是用的触动按钮,关闭播放器界面小三角按钮是点击按钮,两个按钮定义和设置不同的!

注意看看两个按钮部分不同的定义!

var kzk:MovieClip;//光盘按钮
var kzg:SimpleButton;//小三角按钮

kzk.addEventListener(MouseEvent.MOUSE_OVER,kzkClickHandler);//光盘按钮用的 MouseEvent.MOUSE_OVER
kzg.addEventListener(MouseEvent.CLICK,kzgClickHandler);//小三角按钮 MouseEvent.CLICK

function kzkClickHandler(event:MouseEvent):void//打开
{
kzk.visible = false;
addEventListener(Event.ENTER_FRAME,jjonEnterFrame);
stage.removeEventListener(MouseEvent.MOUSE_OVER,kzkClickHandler);//光盘按钮用的 MouseEvent.MOUSE_OVER
}

function kzgClickHandler(event:MouseEvent):void//关闭
{
kzg.visible = false;
stage.removeEventListener(MouseEvent.CLICK,kzgClickHandler);//小三角按钮 MouseEvent.CLICK
xgxsTimer .addEventListener("timer",jjtimerHandler);
xgxsTimer .start();
}

这回应该明白了?试试?

[本帖最后由 hzqfhy 于 2013-11-3 15:59 编辑]

红叶老师,我想应该是:文本失去鼠标交点晃动 否则停止晃动才对啊。只是我不会写代码!!!

 
udhjjn

回复时间:2013-11-3 19:36
下面的代吗是文本框初始不动,鼠标放上去就会左右不停的摆动 。我想要初始就左右摆动,鼠标放文本框上停止摆动,鼠标离开后继续不停的摆动。求更改下面的代码!!!!
var speed:int;
speed = 1;
文本框.addEventListener(MouseEvent.MOUSE_OVER,mouseclick);
function mouseclick(event:MouseEvent):void
{
文本框.addEventListener(Event.ENTER_FRAME,onenterframe);
}
function onenterframe(e:Event)
{
文本框.x += speed;
if (文本框.x >160)
{
speed = -1;
}
else if (文本框.x <0)
{
speed = 1;
}
}

 
wu2011

回复时间:2013-11-4 10:19
“直接在歌词类里画个渐变矩形,就会跟着变化了,简单又实用”

请问这是谁出的主意啊??能不能给出代码和效果吗?

 
udhjjn

回复时间:2013-11-4 12:51

原帖由 wu2011 于 2013-11-4 10:19 发表
“直接在歌词类里画个渐变矩形,就会跟着变化了,简单又实用”

请问这是谁出的主意啊??能不能给出代码和效果吗?

注意是不错,但不太容易。

[本帖最后由 udhjjn 于 2013-11-4 12:52 编辑]

 
udhjjn

回复时间:2013-11-4 12:53

原帖由 udhjjn 于 2013-11-3 19:36 发表
下面的代吗是文本框初始不动,鼠标放上去就会左右不停的摆动 。我想要初始就左右摆动,鼠标放文本框上停止摆动,鼠标离开后继续不停的摆动。求更改下面的代码!!!!
var speed:int;
speed = 1;
文本框.addEventListener(MouseEvent.MOUSE_OVER,mouseclick);
function mouseclick(event:MouseEvent):void
{
文本框.addEventListener(Event.ENTER_FRAME,onenterframe);
}
function onenterframe(e:Event)
{
文本框.x += speed;
if (文本框.x >160)
{
speed = -1;
}
else if (文本框.x <0)
{
speed = 1;
}
}

已找到解决办法!!

 
whn2013

回复时间:2013-11-4 14:07

原帖由 wu2011 于 2013-11-4 10:19 发表
“直接在歌词类里画个渐变矩形,就会跟着变化了,简单又实用”

请问这是谁出的主意啊??能不能给出代码和效果吗?

敬复:WU2011老师!
若遮罩横排歌词淡入淡出,画一个渐变椭圆应该可以实现,效果不是十分理想,
遮罩竖排(多行)歌词,就得用渐变矩形填充了,颜色、透明、偏移量数组都取4个值,然后再旋转90度
不关横排 竖排歌词,推荐使用渐变矩形做遮罩
代码就不帖出来了,在老师面前班门弄斧了、
成不成还望大家实验~

也回复楼上所有“高手老师” (WU2011老师莫见笑),在这里我写不出来代码,有人叫我练练,我也练不出来什么名堂,怕笑掉“高手老师”的门牙,有基础、有思路、还有WU2011老师的原码,还愁写不出来这个简单的 渐变填充

 
hzqfhy

回复时间:2013-11-4 15:10

原帖由 wu2011 于 2013-11-4 10:19 发表
“直接在歌词类里画个渐变矩形,就会跟着变化了,简单又实用”

请问这是谁出的主意啊??能不能给出代码和效果吗?


问好老师! 呵呵~ 又在倒腾你的播放器了,只是没什么长进,做了这个音乐帖灌灌水而已,顺便分享了个倒腾过的稍笨小效果。

[本帖最后由 hzqfhy 于 2013-11-4 18:23 编辑]

 
wu341

回复时间:2013-11-4 17:19
有兴趣的朋友测试下:(顺便回复 whn2013 ,是这样吗?)

//创建 Sprite并绘制矩形
var 遮罩块: Shape = new Shape(); // 创建新对象Sprite
var colors:Array = [0,0xFFCC00,0xFFCC00,0];//颜色数组
var alphas:Array = [0,100,100,0];//透明度数组
var ratios:Array = [0,80,175,255];偏移量数组
var matrix: Matrix = new Matrix();
matrix.createGradientBox( 550, 1, Math.PI/1, 0, 0 );//Math.PI/1旋转度数,不需要也可以设置为 0
遮罩块.graphics.beginGradientFill( GradientType.LINEAR, colors, alphas, ratios, matrix );//GradientType.LINEAR矩形填充
遮罩块.graphics.drawRect( 0, 0, 550, 100 );
遮罩块.graphics.endFill();
addChild(遮罩块)
//把两个显示对象转换成图形
歌词.cacheAsBitmap = true;  
遮罩块.cacheAsBitmap = true;  
歌词.mask =遮罩块//这就是遮罩了
[全屏欣赏]


[本帖最后由 wu341 于 2013-11-4 17:39 编辑]

 
hzqfhy

回复时间:2013-11-4 18:18

原帖由 wu341 于 2013-11-4 17:19 发表
有兴趣的朋友测试下:(顺便回复 whn2013 ,是这样吗?)

//创建 Sprite并绘制矩形
var 遮罩块: Shape = new Shape(); // 创建新对象Sprite
var colors:Array = [0,0xFFCC00,0xFFCC00,0];//颜色数组
var alphas:Array = [0,100,100,0];//透明度数组
var ratios:Array = [0,80,175,255];偏移量数组
var matrix: Matrix = new Matrix();
matrix.createGradientBox( 550, 1, Math.PI/1, 0, 0 );//Math.PI/1旋转度数,不需要也可以设置为 0
遮罩块.graphics.beginGradientFill( GradientType.LINEAR, colors, alphas, ratios, matrix );//GradientType.LINEAR矩形填充
遮罩块.graphics.drawRect( 0, 0, 550, 100 );
遮罩块.graphics.endFill();
addChild(遮罩块)
//把两个显示对象转换成图形
歌词.cacheAsBitmap = true;  
遮罩块.cacheAsBitmap = true;  
歌词.mask =遮罩块//这就是遮罩了
[全屏欣赏]


[本帖最后由 wu341 于 2013-11-4 17:39 编辑]


有点交流的意思! 谢过疯子了!

对照一下我用的频谱遮罩现在知道向两边渐变的的代码区别所在了!

我用的一边渐变矩形代码!
var w:Number = 610;
var h:Number = 200;
var type:String = GradientType.LINEAR;
var cmp_mask:Sprite = new Sprite();
var color:Array = [0x006699,0x006699];//设置颜色数组
var alphaAr:Array = [0,100];//透明度数组
var rotios:Array = [0,255];//偏移量,数组
var matix:Matrix = new Matrix();//矩阵
matix.createGradientBox(w,h, Math.PI*0.5, 0, 100);
cmp_mask.graphics.beginGradientFill(type, color, alphaAr, rotios, matix);
cmp_mask.graphics.drawRect(0, 100, w, h);
cmp_mask.graphics.endFill();
addChild(cmp_mask);

 
wu2011

回复时间:2013-11-5 03:04
用代码写这个效果,看到这么久,终于看到了在32楼WU341的代码是比较正确的。


这是我后来加上去,代码跟32楼也是一样的~~

private function setMask(value:Object):void
{

var _mask:Sprite=new Sprite();
var colors:Array = new Array(0x000000,0x000000,0x000000,0x000000);
var alphas:Array = new Array(0,1,1,0);
var ratios:Array = new Array(0,20,235,255);
var matrix:Matrix = new Matrix();
matrix.createGradientBox( value.width, value.height, 0, 0, 0);

_mask.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, matrix);
_mask.graphics.drawRect(value.x, value.y, value.width, value.height);
_mask.graphics.endFill();


addChild(_mask);

_mask.cacheAsBitmap = true;
value.cacheAsBitmap = true;
value.mask = _mask;
}

注:

这效果是在LRCPlayer类完成,不能在PlayLyrics类完成,不能将container缓存为位图形式(cacheAsBitmap = true),否则会导致mask出错!!!

近日hzqfhy不断创新、实践,无论对设计或对代码的掌握都很好啊~~
加油~~兄弟~~~

 
六月雨2011

回复时间:2013-11-5 08:25

原帖由 wu341 于 2013-11-4 17:19 发表
有兴趣的朋友测试下:(顺便回复 whn2013 ,是这样吗?)

//创建 Sprite并绘制矩形
var 遮罩块: Shape = new Shape(); // 创建新对象Sprite
var colors:Array = [0,0xFFCC00,0xFFCC00,0];//颜色数组
var alphas:Array = [0,100,100,0];//透明度数组
var ratios:Array = [0,80,175,255];偏移量数组
var matrix: Matrix = new Matrix();
matrix.createGradientBox( 550, 1, Math.PI/1, 0, 0 );//Math.PI/1旋转度数,不需要也可以设置为 0
遮罩块.graphics.beginGradientFill( GradientType.LINEAR, colors, alphas, ratios, matrix );//GradientType.LINEAR矩形填充
遮罩块.graphics.drawRect( 0, 0, 550, 100 );
遮罩块.graphics.endFill();
addChild(遮罩块)
//把两个显示对象转换成图形
歌词.cacheAsBitmap = true;  
遮罩块.cacheAsBitmap = true;  
歌词.mask =遮罩块//这就是遮罩了
[全屏欣赏]


[本帖最后由 wu341 于 2013-11-4 17:39 编辑]

不错,支持疯子老师,帅呆了,给大家学习的一个机会,论坛是交流的平台,也给我这样的菜鸟学习的机会,如有不恰当的词语,请海涵!谢谢分享代码!




----------------------------------------------
美的事物是永恒的喜悦。如果笑靥如花,如果风情万种,如果那般决绝。那么让我们一起聆听吧!
 
udhjjn

回复时间:2013-11-5 08:41

原帖由 wu2011 于 2013-11-5 03:04 发表
用代码写这个效果,看到这么久,终于看到了在32楼WU341的代码是比较正确的。


这是我后来加上去,代码跟32楼也是一样的~~

private function setMask(value:Object):void
{

var _mask:Sprite=new Sprite();
var colors:Array = new Array(0x000000,0x000000,0x000000,0x000000);
var alphas:Array = new Array(0,1,1,0);
var ratios:Array = new Array(0,20,235,255);
var matrix:Matrix = new Matrix();
matrix.createGradientBox( value.width, value.height, 0, 0, 0);

_mask.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, matrix);
_mask.graphics.drawRect(value.x, value.y, value.width, value.height);
_mask.graphics.endFill();


addChild(_mask);

_mask.cacheAsBitmap = true;
value.cacheAsBitmap = true;
value.mask = _mask;
}

注:

这效果是在LRCPlayer类完成,不能在PlayLyrics类完成,不能将container缓存为位图形式(cacheAsBitmap = true),否则会导致mask出错!!!

近日hzqfhy不断创新、实践,无论对设计或对代码的掌握都很好啊~~
加油~~兄弟~~~

表示不会加到播放器中!!希望wu2011 能从新更新加了这个内部遮置的播放器!!

 
六月雨2011

回复时间:2013-11-5 09:28

原帖由 wu2011 于 2013-11-5 03:04 发表
用代码写这个效果,看到这么久,终于看到了在32楼WU341的代码是比较正确的。


这是我后来加上去,代码跟32楼也是一样的~~

private function setMask(value:Object):void
{

var _mask:Sprite=new Sprite();
var colors:Array = new Array(0x000000,0x000000,0x000000,0x000000);
var alphas:Array = new Array(0,1,1,0);
var ratios:Array = new Array(0,20,235,255);
var matrix:Matrix = new Matrix();
matrix.createGradientBox( value.width, value.height, 0, 0, 0);

_mask.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, matrix);
_mask.graphics.drawRect(value.x, value.y, value.width, value.height);
_mask.graphics.endFill();


addChild(_mask);

_mask.cacheAsBitmap = true;
value.cacheAsBitmap = true;
value.mask = _mask;
}

注:

这效果是在LRCPlayer类完成,不能在PlayLyrics类完成,不能将container缓存为位图形式(cacheAsBitmap = true),否则会导致mask出错!!!

近日hzqfhy不断创新、实践,无论对设计或对代码的掌握都很好啊~~
加油~~兄弟~~~


期待wu2011老师歌词遮罩淡入淡出,和曲目走动淡入淡出源码分享




----------------------------------------------
美的事物是永恒的喜悦。如果笑靥如花,如果风情万种,如果那般决绝。那么让我们一起聆听吧!
 
hzqfhy

回复时间:2013-11-5 14:03
记得上次捣腾WU2011老师的单行歌词变多行上滚动效果,呵呵~最后得到老师的多行上滚动原本源码,这回捣腾歌词遮罩效果又得到老师标准代码写的渐变歌词遮罩,很有收获!谢谢老师了!现已结合捣腾的播放器歌词显示位置用老师的代码稍做调整罩在歌词上了!

 
udhjjn

回复时间:2013-11-5 16:55

原帖由 hzqfhy 于 2013-11-5 14:03 发表
记得上次捣腾WU2011老师的单行歌词变多行上滚动效果,呵呵~最后得到老师的多行上滚动原本源码,这回捣腾歌词遮罩效果又得到老师标准代码写的渐变歌词遮罩,很有收获!谢谢老师了!现已结合捣腾的播放器歌词显示位置用老师的代码稍做调整罩在歌词上了!

红叶老师你好,能说一下这个代码放到LRCPlayer.as的什么位置,放后需要从新设置什么吗?

 
epock

回复时间:2013-12-15 14:38
各个都是高手,学习了!

 
发新帖 新投票
 回帖
查看积分策略说明快速回复主题
你的用户名: 密码:   免费注册(只要30秒)


启用 Html 代码
使用个人签名
(请您文明上网理性发言!并遵守相关规定贴文发布前,请确认贴文内容完全由您个人创作或您得到了版权所有者的授权。版权声明
   



Processed in 0.021915 s, 8 q - sitemap,