Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отключение воспроизведения звука! (http://www.flasher.ru/forum/showthread.php?t=130203)

n_drey 20.09.2009 18:18

Отключение воспроизведения звука!
 
Только начал программировать на CS3 до этого никогда к флешу не прикосался и тут что то затянуло. Задача тривиальная, но почему то не работает. флешка при загрузке воспроизводиться звук - на stage кнопка. При нажатии на кнопку звук дожен выключаться больше в принципе ничего не требуется.
Вот мной написанный класс.
Код AS3:

package {
        import flash.display.MovieClip;
        import flash.media.Sound;
        import flash.media.SoundChannel;
        import flash.events.MouseEvent;
        import flash.net.*;
 
        public class sound extends MovieClip {
                public function sound(){
 
                        var snd:Boolean = false;
                        addEventListener(MouseEvent.CLICK, soundOff);
 
                                if(snd == false){
                                trace("Play");
                                var pl:Sound = new Sound(new URLRequest("tamta.mp3"));
                                var channel:SoundChannel = pl.play();
                                } else {trace("not work");}
 
                }
 
                                public function soundOff(evt:MouseEvent):void
                                {
                                        trace("Off sound");
                                        var pl:Sound = new Sound(new URLRequest("tamta.mp3"));
                                        stop();
                                }
 
        }
}

Функция отрабатывается, но звук не выключается.
Код AS3:

public function soundOff(evt:MouseEvent):void
                                {
                                        trace("Off sound");
                                        var pl:Sound = new Sound(new URLRequest("tamta.mp3"));
                                        stop();
                                }

Пользовался руководством http://help.adobe.com/ru_RU/ActionSc...0204-7d12.html не помогло.
Спасибо !

wvxvw 20.09.2009 18:27

Вам нужно у SoundChanell'a вызывать stop() (у того, который тот самый звук и играет). Немного заморочено конечно... но так вот уж сделано...

BlooDHounD 20.09.2009 18:29

а вас не смутило что в руководстве написано так:
Цитата:

Код AS3:

channel.stop();


???

СлаваRa 20.09.2009 18:30

http://help.adobe.com/ru_RU/AS3LCR/F...0.0/index.html - вот тут все написано для вас

n_drey 20.09.2009 18:45

Цитата:

Сообщение от СлаваRa (Сообщение 852220)
http://help.adobe.com/ru_RU/AS3LCR/F...0.0/index.html - вот тут все написано для вас

Спасибо за материал. Внимательно прочитал,но так и не понял одного, что мне мешает вызвать close(); в фнкции soundOff.
Постоянно получаю ошибку 1180: Call to a possibly undefined method close.

AQUAFRESH 20.09.2009 19:32

var pl:Sound = new Sound(new URLRequest("tamta.mp3"));

этот файл tamta.mp3 должен быть в папке с флешкой или в библиотеки??
или так и так работает?

Kuruki 20.09.2009 19:37

Call to a possibly undefined method close -> Невозможно вызвать неопределенный метод close

n_drey 20.09.2009 19:45

Цитата:

Сообщение от AQUAFRESH (Сообщение 852231)
var pl:Sound = new Sound(new URLRequest("tamta.mp3"));

этот файл tamta.mp3 должен быть в папке с флешкой или в библиотеки??
или так и так работает?

Звук работает и файлик леждит в той же папке.. Проблема в том, что выключить не могу его кнопкой.. Нет возможности вызвать метод close() при нажатии мышкой. Вот только почему я понять не могу. Скрипт тривиальный. Сижу уже несколько часов =(

Добавлено через 6 минут
Переделал скрипт.
Код AS3:

package {
        import flash.display.MovieClip;
        import flash.media.Sound;
        import flash.media.SoundChannel;
        import flash.events.MouseEvent;
        import flash.net.*;
        import flash.errors.IOError;
    import flash.events.IOErrorEvent;
 
 
        public class sound extends MovieClip {
 
        var snd:Boolean = true;
        var s:Sound = new Sound();
 
                    public function sound(){
 
 
                        var req:URLRequest = new URLRequest("tamta.mp3");
 
                        addEventListener(MouseEvent.CLICK, soundOff);
 
                                if(snd == true){
                                trace("Play");
 
                                s.load(req);
                                s.play();
 
                                }
 
                }
 
                                public function soundOff(evt:MouseEvent):void
                                {
                                        trace("Off sound");
 
                                        s.close();
                                }
 
        }
}

Запускаю музыка выспроизводиться.. Нажимаю на кнопку получаю ошибку:
Error: Error #2029: Этот объект URLStream не имеет открытого потока.
at flash.media::Sound/close()
at sound/soundOff()
Чтобы это значило не имеет открытого потока ? Музыка то играет ? Начинается ступор. =(

wvxvw 20.09.2009 19:51

Вы бы попытались прочитать первые 2 сообщения следующие за вашим...

n_drey 20.09.2009 20:01

Цитата:

Сообщение от wvxvw (Сообщение 852243)
Вы бы попытались прочитать первые 2 сообщения следующие за вашим...

Да прочитал я всё..


Часовой пояс GMT +4, время: 22:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.