佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1222|回复: 22

Flash高手请进。。。

[复制链接]
blueyesblue 该用户已被删除
发表于 11-11-2005 01:29 AM | 显示全部楼层 |阅读模式
我原本的FLA文件声音可以走的
但我做Mute button时A_MC里的声音文件全部没声了。。。
因为有很多mc里的音量不是100,我不能用单一的setVolume(0);

我必需检查它要播的音量。。然后再检查Mute按钮的状态。。才return回Volume数量
以下是我的Coding


A_MC 里的声音控制: (这个MC有很多声音,我不列出来全部了)

  1.         CryingSound=new Sound();//放上声音
  2.         CryingSound.attachSound("Crying");
  3.         CryingSound.setVolume(myplayvolume(50));
  4.         CryingSound.start(0,1);  
复制代码



主时间轴:A_MC的AS

  1. onClipEvent(EnterFrame){//每一秒检查Mute按钮状态
  2.         myplayvolume=function(Vol_Num){       //Vol_Num是那个声音应该要放的音量
  3.                 if(Muted==true){
  4.                         playingVolume=0;      //如果Mute按钮按了,音量变没声
  5.                         return playingVolume;
  6.                 }else if(Muted==false){
  7.                         playingVolume=Vol_Num;
  8.                         return playingVolume;
  9.                 }
  10.         }
  11. }
复制代码

myplayvolume是我自己写的,是不是这里的return,setVolume不能接受到?
这一个Function用来检查Mute按钮状态,跟return它的音量...
如果Mute没按,它就播它Pass进来的Vol_Num



......

[ 本帖最后由 blueyesblue 于 12-11-2005 11:07 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 11-11-2005 08:07 AM | 显示全部楼层
楼主,我自问不能帮到你,但如果你要检查他是不是有接受return,setVolume你可以用trace("xxxx");来检查。。。
如果可以的话,最好放上你的file。。。
回复

使用道具 举报

发表于 11-11-2005 03:26 PM | 显示全部楼层

试试在这里 trace(Muted)
相信会返回 undefined
如是 myplayvolume 将返回 undefined (在 setVolume() 里也代表 0)
onClipEvent(EnterFrame){//每一秒检查Mute按钮状态
        myplayvolume=function(Vol_Num){       //Vol_Num是那个声音应该要放的音量
                trace(Muted)
                if(Muted==true){
                        playingVolume=0;      //如果Mute按钮按了,音量变没声
                        return playingVolume;
                }else if(Muted==false){
                        playingVolume=Vol_Num;
                        return playingVolume;
                }
        }
}

还有……
似乎不需要 onClipEvent(EnterFrame){//每一秒检查Mute按钮状态
还有 myplayvolume 在 onClipEvent(EnterFrame) 结束后应该就会自动 dispose 所以 myplayvolume 也是 undefined
        CryingSound=new Sound();//放上声音
        CryingSound.attachSound("Crying" );
        trace(myplayvolume) //相信也是返回 undefined
        CryingSound.setVolume(myplayvolume(50));
        CryingSound.start(0,1);  


小章鱼不知道楼主真正是怎样的结构,所以也没有办法确认。
要知道 Flash 编程的结构会比其它的来得复杂。
回复

使用道具 举报

发表于 11-11-2005 11:35 PM | 显示全部楼层
没文件是不明白你的情况
回复

使用道具 举报

blueyesblue 该用户已被删除
 楼主| 发表于 12-11-2005 11:00 AM | 显示全部楼层
原帖由 sson 于 11-11-2005 03:26 PM 发表

试试在这里 trace(Muted)
相信会返回 undefined
如是 myplayvolume 将返回 undefined (在 ...


啊呀。。。给你们说中了。。。。真的return,undefined。。。。。
另一个return "Type function"
zomok 会这样的 ?
回复

使用道具 举报

发表于 12-11-2005 11:53 AM | 显示全部楼层

原帖由 blueyesblue 于 12-11-2005 11:00 AM 发表
啊呀。。。给你们说中了。。。。真的return,undefined。。。。。
另一个return "Type function"
zomok 会这样的 ?

由于架构的关系,你必须清楚 Flash 的架构才行。

还有每个声音要有不一样的音量,必须把他们捆绑到不一样的 MC 才能

  1. // 在主时间轴上
  2. var muted:Boolean = false
  3. var oSound:MovieClip = this.createEmptyMovieClip("__sounds__", this.getNextHighestDepth())
  4. function getSound(id:String) {
  5.         if (oSound[id] == undefined) {
  6.                 oSound.createEmptyMovieClip(id, oSound.getNextHighestDepth())
  7.                 oSound[id].sfx = new Sound(oSound[id])
  8.                 oSound[id].sfx.attachSound(id)
  9.         }
  10.         return oSound[id].sfx
  11. }
  12. function muteSound(flag:Boolean) {
  13.         muted = flag
  14.         if (muted) {
  15.                 var s = new Sound(oSound)
  16.                 s.setVolume(0)
  17.         } else {
  18.                 var s = new Sound(oSound)
  19.                 s.setVolume(100)
  20.         }
  21. }
  22. // 调用就是
  23. // _root.getSound({id}).setVolume(50)
  24. // _root.getSound({id}).setPan(100)
  25. // _root.getSound({id}).start()
  26. //
  27. // _root.muteSound(true/false)
  28. //
  29. // 没有测过,不过应该是对的
  30. // 这一个还有很多缺点,不过应该可以满足你的需要
  31. // 可以的话更改为 class 会更好。
复制代码
回复

使用道具 举报

Follow Us
blueyesblue 该用户已被删除
 楼主| 发表于 12-11-2005 04:31 PM | 显示全部楼层
原帖由 sson 于 12-11-2005 11:53 AM 发表


// 调用就是
// _root.getSound({id}).setVolume(50)
// _root.getSound({id}).setPan(100)
// _root.getSound({id}).start()
//
// _root.muteSound(true/false)


这短用在MC,控制声音吗 ?
可以给一小段例子吗 ?怎样用 ?

因为我不是很明白你教我的结构
回复

使用道具 举报

发表于 12-11-2005 05:45 PM | 显示全部楼层

对,这段就是控制声音的。
比如你要播 "Crying" 的声音(必须在 Library 里做 Linkage ,{id}是Linkage Identifier)
跟你的大同小异啦(你的)
1  CryingSound=new Sound();//放上声音
2  CryingSound.attachSound("Crying");
3  CryingSound.setVolume(myplayvolume(50));
4  CryingSound.start(0,1);  

soundOn_btn1._visible = false;
soundOff_btn1.onPress = function() {
        soundOff_btn1._visible = false;
        soundOn_btn1._visible = true;
        Muted=true;
};
soundOn_btn1.onPress = function() {
        soundOff_btn1._visible = true;
        soundOn_btn1._visible = false;
        Muted=false;
};

小章鱼的
1  不必
2  CryingSound = _root.getSound("Crying")
3  CryingSound.setVolume(50)
4  CryingSound.start(0,1)

soundOn_btn1._visible = false;
soundOff_btn1.onPress = function() {
        soundOff_btn1._visible = false;
        soundOn_btn1._visible = true;
        _root.muteSound(true);
};
soundOn_btn1.onPress = function() {
        soundOff_btn1._visible = true;
        soundOn_btn1._visible = false;
        _root.muteSound(false);
};



// 在某 Button 上(点击时播 Crying,音量为 60,loop 为 3 次)
on(press){
        _root.getSound("Crying").setVolume(60)
        _root.getSound("Crying").start(0, 3)
}
// 在某 Button 上(点击时 mute)
on(press){
        _root.muteSound(true)
}
// 在某 Button 上(点击时 unmute)
on(press){
        _root.muteSound(false)
}
回复

使用道具 举报


ADVERTISEMENT

blueyesblue 该用户已被删除
 楼主| 发表于 12-11-2005 09:48 PM | 显示全部楼层

回 sson

我放你教的Code
有声音回了。。。Timing And Loop也对了就是
Mute Part还是弄不到咯

[ 本帖最后由 blueyesblue 于 12-11-2005 11:05 PM 编辑 ]
回复

使用道具 举报

发表于 12-11-2005 10:21 PM | 显示全部楼层

你把小章鱼的
var muted:Boolean = false
改成
var muteSound:Boolean = false
当然不行呀

多个声音一起播就
_root.getSound("SmileID1").setVolume(100)
_root.getSound("SmileID1").start()
_root.getSound("SmileID2").setVolume(80)
_root.getSound("SmileID2").start()
_root.getSound("SmileID3").setVolume(60)
_root.getSound("SmileID3").start()

偶尔也要自己消化一下嘛……
还好今天有上网,明天起最少 5 天小章鱼不会在。
回复

使用道具 举报

blueyesblue 该用户已被删除
 楼主| 发表于 12-11-2005 10:46 PM | 显示全部楼层
sson 谢谢你。。。

至于那一段,我以为你帮我时跟我的Variable
所以我改回你的muteSound


看了几本书学那些基本的东西不能用在我的Flash
就像原本的Code怪怪的到Undefine,你们写怎么久可能也得不到Undefine吧

你要快点回来才行
不然没有人教我用Advance AS
回复

使用道具 举报

发表于 12-11-2005 11:26 PM | 显示全部楼层

小章鱼也不是什么高手,所以也是经常会碰到 undefined
只有善用 trace 咯,什么东西不确定的就给它 trace 一下。

近期小章鱼也很少上佳礼了,从然上来也是胡乱看看一二帖罢。
不过这里高手真的还蛮多的,问问 super-tomato ,他定可以帮你。
回复

使用道具 举报

blueyesblue 该用户已被删除
 楼主| 发表于 14-11-2005 09:10 PM | 显示全部楼层
.sfx

是什么来的为什么Marcomedia LiveDocument找不到的 ?

你也很强了..算是高手了啦.....
Super-Tomato最近好像很忙不要麻烦他了

[ 本帖最后由 blueyesblue 于 14-11-2005 09:13 PM 编辑 ]
回复

使用道具 举报

发表于 15-11-2005 05:18 AM | 显示全部楼层
sfx??? 這不是 self-extrator 的壓縮格式嗎??
回复

使用道具 举报

blueyesblue 该用户已被删除
 楼主| 发表于 15-11-2005 04:24 PM | 显示全部楼层
原帖由 super-tomato 于 15-11-2005 05:18 AM 发表
sfx??? 這不是 self-extrator 的壓縮格式嗎??


wkakaa.....不是啦.......
我讲的.sfx是小章鱼的ActionScript里的

应该是用来当声音的新ID
回复

使用道具 举报

发表于 15-11-2005 06:54 PM | 显示全部楼层
那麽你把文件傳過來我看看吧
回复

使用道具 举报


ADVERTISEMENT

blueyesblue 该用户已被删除
 楼主| 发表于 17-11-2005 05:59 PM | 显示全部楼层
大多数的AS在下面了


// 在主时间轴上
var muted:Boolean = false
var oSound:MovieClip = this.createEmptyMovieClip("__sounds__", this.getNextHighestDepth())
function getSound(id:String) {
        if (oSound[id] == undefined) {
                oSound.createEmptyMovieClip(id, oSound.getNextHighestDepth())
                oSound[id].sfx = new Sound(oSound[id])
                oSound[id].sfx.attachSound(id)
        }
        return oSound[id].sfx
}
function muteSound(flag:Boolean) {
        muted = flag
        if (muted) {
                var s = new Sound(oSound)
                s.setVolume(0)
        } else {
                var s = new Sound(oSound)
                s.setVolume(100)
        }
}
// 调用就是
// _root.getSound({id}).setVolume(50)
// _root.getSound({id}).setPan(100)
// _root.getSound({id}).start()
//
// _root.muteSound(true/false)
//
// 没有测过,不过应该是对的
// 这一个还有很多缺点,不过应该可以满足你的需要
// 可以的话更改为 class 会更好。

[ 本帖最后由 blueyesblue 于 17-11-2005 06:00 PM 编辑 ]
回复

使用道具 举报

发表于 18-11-2005 02:01 AM | 显示全部楼层
最好把文件傳過來會比較清楚,因爲你寫的代碼意義不太能夠理解

var muted:Boolean = false
var oSound:MovieClip = this.createEmptyMovieClip("__sounds__", this.getNextHighestDepth())
function getSound(id:String) {
        if (oSound[id] == undefined) {
                oSound.createEmptyMovieClip(id, oSound.getNextHighestDepth())
                oSound[id].sfx = new Sound(oSound[id])
                oSound[id].sfx.attachSound(id)
        }
        return oSound[id].sfx
}
function muteSound(flag:Boolean) {
        muted = flag
        if (muted) {
                var s = new Sound(oSound)
                s.setVolume(0)
        } else {
                var s = new Sound(oSound)
                s.setVolume(100)
        }
}


// _root.getSound({id}).setVolume(50)
// _root.getSound({id}).setPan(100)
// _root.getSound({id}).start()
//
_root.muteSound(true/false)  //這裡的參數不是true就是false,2選一





是我的話會這樣寫

Sounds = function(id) {
  var target = this.createEmptyMovieClip("_sound"+id, this.getNextHighestDepth());
  var s = new Sound(target);  //定義聲音對象,定義的原因去看我以前寫的教程
  s.attachSound(id);  //取得library中的音樂linkage id
  return s;  //返回音樂對象
}
Sound.prototype.init = function(vol,pan,offset,loop) {
  if(vol == undefined) vol = 100;  //如果沒有音量參數,音量就設定為100
  if(pan == undefined) pan = 100;  //同上
  if(offset == undefined) offset = 0;  //同上
  if(loop == undefined) loop = 1;  //同上
  this.setVolume(volume);  //設定音量
  this.setPan(pan);  //設定左右揚聲
  this.start(offset, loop);  //開始播放
}
var mySound = Sounds("library中的音樂名" );  //交由函數定義sound class
mySound.init(50,-100,0,10);  //初始音樂播放,函數中參數分別為,(音量,平衡,開始播放秒數,重新播放次數)

var mySound2 = Sounds("library中的音樂名" );  //交由函數定義sound class
mySound2.init(100,100);  //初始音樂播放,函數中參數分別為,(音量,平衡,開始播放秒數,重新播放次數)


muteSound這個根本不需要,只要自己定義 setVolume() 為 0 就代表把音量降至 0了
回复

使用道具 举报

发表于 19-11-2005 01:25 AM | 显示全部楼层

小章鱼回来了,比预期的还早回到家。

blueyesblue
.sfx 是自定义啦,由于小章鱼编惯了(sfx = sound effect)所以就用酱咯

muteSound 是方便一次过把所有的声音 setVolume() 为 0
super-tomato 的方法可能比较适合 blueyesblue
不过小章鱼比较常用于游戏,所以比较不喜欢这种方法,
尤其是 AS2.0 后,更合适小章鱼的编法。
等 AS3.0 出来后就更赞了。期待中 ^^
回复

使用道具 举报

发表于 19-11-2005 06:46 AM | 显示全部楼层
哈哈~~~ 在论坛用2.0回复只怕会产生更多问题,用1.0的继承方法方便快捷。

3.0 《--- 最恨他的regexp这个时候才出现,害我们之前写了那么多步骤
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 21-9-2024 02:48 PM , Processed in 0.172929 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表