Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   создание кнопок с картинками, запись звуков (http://www.flasher.ru/forum/showthread.php?t=65713)

Анонимщик1 17.06.2005 11:47

создание кнопок с картинками, запись звуков
 
Здравствуйте.
Прошу особо не ругать и сразу не пинать.
Вот хочу сделать следующее: чтобы был у меня swf-файл, а в нем две кнопки с картинками в них (или правильно говорить - на них?), при нажатии по первой кнопке нужно проигрывать звук (который тоже содержится в этом же swf-файле), а по нажатии на вторую - проигывание останавливалось бы.
Но я совершенно нулевой во флеше.
По идее, нужно бы сделать следующее:
1. Создать клип.
2. Создать две кнопки.
3. Загрузить в них картинки (если это возможно - или это как-то по-другому делается).
4. Предварительно (как-то, не знаю как) конвертировать wav (или mp3 ) - файл во что-то, что в виде ресурса подшить к будущему swf-файлу.
5. Навесить на кнопки события.

Начинаю делать - файл Butts.as:

class Butts {
function Butts() {
_root.createEmptyMovieClip("startButton", 0);
// все, приехали, я не знаю, как создать кнопки и, тем более, загрузить в них картинки
}


// точка входа здесь
static function main() {
var p = new Butts();
}
}


Я не знаю даже как создать кнопки, связать с ними переменные и загрузить в них картинки.

Сказать, что перерыл хелп - не могу, но искал. Я принципа не понял - что к чему. Поэтому прошу ответить, как это сделать.

DOG-Paul 17.06.2005 12:02

вообщем звук помещаешь в библотеку, даёшь ему Linkage допустим "mySound"...
На кнопку PLAY вешаешь:
on (release) {
mySound = new Sound();
mySound.attachSound("mySound");
mySound.start ("mySound", 999);
}
На кнопку STOP:
on (release) {
mySound.stop ();
}

Жень Шень 17.06.2005 12:29

Вложений: 1
Цитата:

Сообщение от анонимщик1
я не знаю даже как создать кнопки...

привет!
а, уже ответили...
но, тем не менее лови пример. правда я две кнопки в одну соместил. может понравиться :)

Анонимщик1 17.06.2005 16:16

Очень благодарен за столь быстрые ответы, но очень сильно прошу меня простить, поскольку у меня задача немного другая. Я, прежде всего, не могу открыть файлы *.fla - у меня нет для этого никаких редакторов. Мне нужно, имея только один или несколько исходных текстов, которые понимает компилятор mtasc, создать эти кнопки, загрузить в них рисунки, причем не из внешних каких-то файлов, а из ресурсов самого будущего swf-файла; то же самое и для звуков.

Анонимщик1 17.06.2005 19:29

так если это нетривиально, то скажите об этом, буду хотя бы знать.

Жень Шень 18.06.2005 11:52

Цитата:

Сообщение от Анонимщик1
...так если это нетривиально, то скажите об этом...

Привет!
Синонимы слова "тривиальный": банальный, затасканный, заурядный, избитый, неоригинальный, пошлый, шаблонный. Я даже не знаю, что и сказать. :cool:
А про компилятор mtasc, увы не слышал. :confused:

Король 18.06.2005 12:09

анонимщик, да, это нетривиально.

Анонимщик1 22.06.2005 11:59

ну хорошо.
прошу тогда подсказать, что и где нужно почитать, чтобы я мог видеть пути решения проблемы.

KUZEN 22.06.2005 13:26

Цитата:

Сообщение от Анонимщик1
ну хорошо.
прошу тогда подсказать, что и где нужно почитать, чтобы я мог видеть пути решения проблемы.

Тут и проблемы то нет как таковой, всё что тебе нужно это создавать мувики вместо кнопок (createEmptyMovieClip) ... затем аттачить туда нужные картинки (attachMovie) ... потом вешаешь события на мувики, чтобы они вели себя как кнопки (my_mc.onPress, my_mc.onRelease и т.д.) ...

Анонимщик1 22.06.2005 17:36

Вам может и легко "аттачить", а я могу сделать только с внешним файлом, а как этот самый внешний файл всунуть в виде ресурса в сам swf, а потом оттуда их загружать?

DOG-Paul 22.06.2005 17:48

ну просто в мувик грузи сам файл допустим
_root.mc.loadMovie ('my.jpg');

MaxLife 22.06.2005 20:28

Парень, тебе что за кнопки нужны? Есть два пути - если стандартные плей, стоп, вперёд/назад - то можешь поглядеть в коллекции Buttons, расположенной в меню Window/Other panels/Common libraries/Buttons. Естественно, в меню Flash. Погляди в папке Playback.

Если тебе же надо какие-то разэтакие картинки обязательно грузить, это можно сделать так - кинуть в ролик две кнопки, импортировать в библиотеку (или нарисовать) картинки, в свойствах linkage выдать им идентификаторы, скажем, image1 и image2, после чего в брошенных кнопках в инспекторе свойств засадить те же самые строчки - image1 и image2 в свойство icon и повесить на кнопки обработчики, которые тебе дали.

В принципе, конечно, можешь сделать присваивание также программно.

Ответил я на твой вопрос?

KUZEN 23.06.2005 12:02

Цитата:

Сообщение от MaxLife

Ответил я на твой вопрос?

А ты его вообще читал :D

KUZEN 23.06.2005 12:04

короче в ситуации с внешними файлами ... загрузить в библиотеку и от туды их аттачить неполучится, но ни что нам не мешает создавать мустые мувики и подгружать в них картинки ;)

Анонимщик1 25.06.2005 12:11

Вы меня простите, но, если не знаете, вообще не отвечайте.
Еще раз говорю. У меня, елки палки, нет ничего, кроме компилятора mtasc, который компилирует флешовые исходники в swf. У меня нет никаких FlashMX, библиотек, каких то Other panels и т.д.
Чтобы совсем было понятно, разъясняю. Мне нужно написать программу (например, на с, паскале, бэйсике или т.п., это наважно на чем, хоть на языке bat-файлов), которая бы создавала исходник флеша, скомпилировав который, мы бы получили swf-файл, при запуске которого на просмотр видели бы следующее: есть две кнопки, одна запускает проигрывание некоего звука, вторая его останавливает. swf-файл должен быть самодостаточным, т.е. в нем должны быть и картинки для кнопок, и звуки. bmp-файлы для кнопок задаются из этой самой моей программы, то же самое для звука.
Пожалуйста, если будете отвечать, прошу вас, приведите хоть какой-нибудь код.

MaxLife 25.06.2005 15:41

Вы бы, батенька, чуть терпимее. Используемый вами компилятор отнюдь не стандартен, чтоб вы знали, так что не удивляйтесь. Это во-первых. Во-вторых, в работе вам нужен класс MovieClip, как минимум, его описание лежит по адресу http://flashcodersny.org/assets/Flash_MX_2004_Classes/, если уж так не хочется ставить Flash.

Интересуйтесь также методами createEmptyMovieClip, loadMovie, attachMovie, Sound. Учтите, что любой метод может быть определён примерно таким способом:

obj.draw = function()
{
this.clear;
this.moveTo(0, 10);
this.lineTo(10, 10);
}

картинки можете грузить через obj.loadMovie. Также обратите на onMouseDown, onMouseUp, onKeyPress и так далее. Переопределить можете аналогично. Не теряйте только параметры при описании функции-перехватчика.

MaxLife 25.06.2005 15:56

Сорри, не метод, а объект Sound.

Анонимщик1 25.06.2005 16:26

Спасибо, извините.
Можно узнать, какой компилятор предпочтительнее?
А по ссылке уже смотрю. Для меня, при моем "знании" флеша, очень полезно.
Еще раз извините, но Вы не могли бы буквально в трех абзацах рассказать принцип работы флеша (как программист программисту), а то я, честно сказать, совсем ничего не понял.
Флешовые объекты - это объекты в том же смысле, что и в объектно-ориентированных (или в объектных) языках программирования? Есть ли наследоание, инкапсуляция и т.д.?
Я так понял, что MovieClip - какой-то контейнер, что ли, совершенно необходимый для работы? Может их быть несколько? Какая логика работы в этом случае?

MaxLife 25.06.2005 16:56

Чаще всего Flash воспринимается не как компилятор, а как средство разработки медиа-контента, который (контент) может содержать, а может и не содержать скрипты. Поэтому вопрос с точки зрения "swf с помощью компилятора" звучит экзотически. Я, например, ещё никогда не использовал сторонних систем :).

Используемый в скриптах ActionScript имеет две версии - первую и вторую. Мой пример использует первую, до икоты близкую к JavaScript и отвечающую тому же стандарту ECMA-262 (кажется). Вторая версия - реализованная скорее ближе к обёртке - более объектно-ориентированна. Все принципы ООП поддерживаются. Различие между версиями достаточно слабое - использовать можно обе, не замечая даже, где граница.

Почти все объекты, которые можно использовать, происходят от MovieClip. Это базовый класс. Существуют также стандартные глобальные объекты, нр, _root, _global.

От себя добавлю, что я бы рыл в направлении классов кнопки - Button, SimpleButton, у них есть практически всё что надо (текст, картинка, события и всё прочее), единственное, на что навскидку не могу сказать - как вцепить в неё внешнюю картинку.

Тут проблема в том, что наиболее общепринятая практика - создание шаблонов, по которым потом можно плодить экземпляры сколь угодно. Так вот, в стандартную кнопку (класс Button) можно легко посадить картинку, вложенную в такой шаблон - кнопка внутри себя сама создаст экземпляр объекта-иконки по шаблону и будет с ним распоряжаться, а картинку в иконку уже можно и перегружать (сам не пробовал, честно скажу, но не вижу, почему бы и нет).
А чтобы создать такой шаблон программно, надо использовать, как мне кажется, что-то вроде registerClass.

MaxLife 25.06.2005 16:58

Хотя можно попробовать просто вызвать для объекта кнопки тот же attachMovie, перехватить события и реагировать соответственно. Если очень хочется, можно написать производный класс от кнопки.

MaxLife 25.06.2005 17:06

loadMovie. Совсем внимание потерял.

Captain Crocus 25.06.2005 17:20

>> Почти все объекты, которые можно использовать, происходят от MovieClip. Это базовый класс.

Я очень извиняюсь, а когда упразднили Object? Меня долго не было, может я пропустил самое интересное?

MaxLife 25.06.2005 17:26

Хорошо, от Object :) Но для визуальных элементов MovieClip - базовый :) Я, например, не пытался бы что-то визуальное производить от Object.

Captain Crocus 25.06.2005 17:26

>> различие между версиями достаточно слабое - использовать можно обе, не замечая даже, где граница.

наверное, меня точно давно не было. вы, наверное, батенька оперируете непосредственно байт-кодами, раз вам не видна граница. она там действительно слабо различима, если не сказать больше.

Captain Crocus 25.06.2005 17:30

>> Хорошо, от Object

Ну слава богу, празднуем возвращения джедая, пардон, Object'a.

MaxLife 25.06.2005 17:33

да ради бога.

Captain Crocus 25.06.2005 17:46

>> Но для визуальных элементов MovieClip - базовый

Хотелось бы спросить еще (может, еще чего изменилось, а я не в курсе), Button, TextField - это по Вашему визуальные элементы?

MaxLife 25.06.2005 17:55

и какие же они? прошу просвещения :).

Буньков Максим 25.06.2005 18:04

Берешь компилятор C++ и изобретаешь велосипед (Flash). А потом внедряешь в него mtasc и получаешь swf и все делов то...
З.Ы. ...

Captain Crocus 25.06.2005 18:34

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

ActionScript Language Reference - это источник

The Button class inherits from the Object class.
The TextField class inherits from the Object class.

MaxLife 25.06.2005 19:16

Ну, как вы сами ранее указали, самый первый класс в цепочке, действительно, Object.

Однако, осмелюсь процитировать справку:

Button class
Inheritance MovieClip > UIObject class > UIComponent class > SimpleButton class > Button

ActionScript Class Name mx.controls.Button

Но, опять признаю Вашу правоту, в основе всего действительно лежит Object. Предлагаю оставить полемику на эту тему :). (без стремления обидеть)

Nirth 25.06.2005 19:30

ты говоришь о компоненте Button а мы о элементе Button (когда создаешь новый символ Button ,MovieClip , Graph) это совсем разные баттоны, просто название совпадает

MaxLife 25.06.2005 20:08

Согласен, но, когда вы обращаетесь к ним из скрипта, вы всё равно обращаетесь к ним как к экземплярам MovieClip, не так ли?

Nirth 25.06.2005 20:10

Цитата:

Согласен, но, когда вы обращаетесь к ним из скрипта, вы всё равно обращаетесь к ним как к экземплярам MovieClip, не так ли?
в корне не правильно
Мы обращаемся к MovieClip, Math, Button, LoadVars , XML и всем остальным как к Object'у

MaxLife 25.06.2005 20:13

ну так шум, если я правильно понял, начался именно с того, что лежит в основе визаульных элементов. но нюанс есть, согласен.

MaxLife 25.06.2005 20:16

хорошо, не прав.

OooTPaBKa 18.07.2007 21:51

Хелп ми плз
 
Я начинающий флешер.
Мне нужна помощь в одном дельце... Как записать звук с микрофона во флеш, а потом его проиграть. Нид хелп


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

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