Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.07.2006, 03:47
DCat вне форума Посмотреть профиль Отправить личное сообщение для DCat Посетить домашнюю страницу DCat Найти все сообщения от DCat
  № 1  
Ответить с цитированием
DCat
 
Аватар для DCat

Регистрация: Sep 2005
Адрес: Samara
Сообщений: 37
Отправить сообщение для DCat с помощью ICQ
По умолчанию Удаление функции

Помогите плиз... никак не пойму...
Аттачится мувик, поворачиватеся а потом через таймаут следующий и т.д.
Код:
setInterval(mySpark, 500);
i=1;
function mySpark() {
	attachMovie ("spark", "my", i, {_rotation : Math.floor(Math.random()*360), _x:200, _y:200});
	i++;
	if (i > 50) i=1;
}
Я так понимаю функция, вызванная по таймауту накладывается на предыдущую... потому что количество мувиков растет... а это не очень хорошо для моего случая... как прибить функцию не навредив анимации???

Старый 05.07.2006, 09:21
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 2  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Удалять нужно не функцию, а setInterval таким образом:
Код:
var intervalID:Number=setInterval(mySpark, 500);
i=1;
function mySpark() {
	attachMovie ("spark", "my", i, {_rotation : Math.floor(Math.random()*360), _x:200, _y:200});
	i++;
	if (i > 50) {
               i=1;
               clearInterval(intervalID)
             };
}

Старый 05.07.2006, 10:42
DCat вне форума Посмотреть профиль Отправить личное сообщение для DCat Посетить домашнюю страницу DCat Найти все сообщения от DCat
  № 3  
Ответить с цитированием
DCat
 
Аватар для DCat

Регистрация: Sep 2005
Адрес: Samara
Сообщений: 37
Отправить сообщение для DCat с помощью ICQ
А вот и нет...

Могу при необходимости приаттачить файл...
Если убить setInterval, то функции продолжают жить и мувики летят по одной и той же траектории... (это легко проверить... если поменять максимальное i, скажем на 3...

По задумке принцип следующий - по сетИнтервалу запускается функция mySpark с периодичностью 500мс... отработала -> прибиваем... иначе получается, что запускаются одновременно 3-4, а то и 6 мувиков... после начинается фантан мувиков... а их должно быть на промежутке ПолуСекунды 1 штука... Меняем интервал в меньшую сторону, и мувики появляются быстрей.

Мне нужно прибить отработавшую функцию... как это сделать? =/

Старый 05.07.2006, 10:45
motor4ik вне форума Посмотреть профиль Отправить личное сообщение для motor4ik Посетить домашнюю страницу motor4ik Найти все сообщения от motor4ik
  № 4  
Ответить с цитированием
motor4ik
 
Аватар для motor4ik

Регистрация: Jun 2005
Адрес: Moscow - immigrate from Volgodonsk
Сообщений: 2,534
не понятно ничего, все должно правильно рботать. каждые пол секунды должны приатачиватся мувики, при достижении 50 они просто начнут заменятся на одинаковых глубинах вот и все! а че имя одинаковое у всех??

Старый 05.07.2006, 12:37
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 5  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Код:
var i:Number=1;
var intervalID:Number=setInterval(mySpark, 500);

function mySpark() {
	var spark:MovieClip=_root.attachMovie ("spark", "my"+i, i);
	spark._rotation=Math.floor(Math.random()*360);
	spark._x=200;
	spark._y=200;
	i++;
	if (i > 50) {
        i=1;
        clearInterval(intervalID)
     };
}
Все работает. Ничего прибивать не нужно.

Старый 05.07.2006, 12:55
CorC вне форума Посмотреть профиль Отправить личное сообщение для CorC Найти все сообщения от CorC
  № 6  
Ответить с цитированием
CorC
 
Аватар для CorC

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
я дык не заморачиваюсь при таких ситуациях
у вас идентификатор setInterval одинаковый: intervalID
потому он кое где удаляется а кое где нет
я просто идентификаторы с разными именами создаю и все _root["intID"+i] хотя б так, зато потом отлавливать проще если что не так

Старый 05.07.2006, 13:38
Sneg вне форума Посмотреть профиль Отправить личное сообщение для Sneg Найти все сообщения от Sneg
  № 7  
Ответить с цитированием
Sneg
 
Аватар для Sneg

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Так он же один раз запускает setInterval, для чего ему несколько? Удалится нужный в данном конкретном случае.

Старый 05.07.2006, 15:38
DCat вне форума Посмотреть профиль Отправить личное сообщение для DCat Посетить домашнюю страницу DCat Найти все сообщения от DCat
  № 8  
Ответить с цитированием
DCat
 
Аватар для DCat

Регистрация: Sep 2005
Адрес: Samara
Сообщений: 37
Отправить сообщение для DCat с помощью ICQ
Цитата:
Сообщение от Sneg
Все работает. Ничего прибивать не нужно.
Покажите плиз рабочий вариант =)
Честное слово, хочется посмотреть как ваш код работает у вас...
Потому что у меня он работает вот так: http://dcat.ru/temp/ogni.html

а мой код работает вот так: http://dcat.ru/temp/ogni_fine.html

Старый 05.07.2006, 15:55
DCat вне форума Посмотреть профиль Отправить личное сообщение для DCat Посетить домашнюю страницу DCat Найти все сообщения от DCat
  № 9  
Ответить с цитированием
DCat
 
Аватар для DCat

Регистрация: Sep 2005
Адрес: Samara
Сообщений: 37
Отправить сообщение для DCat с помощью ICQ
CorC Здесь один setInterval, как правило уже подметил Sneg... и он работает правильно... регулярностью 2 сообщения в секунду отписывает Трэйсы...

А для Интервалов использую ID и его чистку через функцию, которая вызывается... это позволяет сделать один уникальный таймер для всего и наплодить его везде, где это необходимо. а время удобнее выставлять локальной переменной для каждого конкретного таймера... Можно целый спектакль разиграть с таймером...

Но Проблема Остается актуальной...
В промежуток времени жизни Функции 1 запускается Функции 2... Функция 1 завершает действия и исчезает... по таймауту запускается Функция 3, и т.д. и т.д.
Т.е. если я задал например вызов функции раз в 2 секунды, значит в течение 2х секунд с момента запуска должна существовать только одна функция... по завершению действия должна автоматически ликвидироваться... и в любой момент выполнения программы с момента запуска функции и до момента следующего таймаута должна существовать только ОДНА функция...
если я задаю 50 мс то функции появляются с периодичностью 50 мс, складываясь стопочкой, и удаляться по завершению...
в моем случае это появление лучей... таймаут 500мс... это значит что в течение 1 секунды на экране не может быть более 2 лучей...

...но их количество, если вы посмотрите в примере растет... это непорядок... как поборот?

Старый 05.07.2006, 16:14
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от DCat
В промежуток времени жизни Функции 1 запускается Функции 2...
А сколько времени живет ваша функция?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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