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

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

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

Регистрация: Oct 2012
Адрес: 59°57′ с. ш. 30°19′ в. д.
Сообщений: 49
По умолчанию Пользовательская функция

Здравствуйте!
Только перехожу на 3 скрипт,и возникла проблема.
Почему то при передачи фактических параметров в функцию компилятор пишет, что "обращение к несуществующему свойству n1",хотя n1 - это формальный параметр типа MovieClip.

И сразу такой вопрос. Сейчас у меня две функции, а можно ли их как то объединить в одну?
До этого было написано на AS2,через одну. А вот как это сделать на AS3 ума не приложу(((

Код AS3:
addEventListener(MouseEvent.MOUSE_OVER,showToolTip)
addEventListener(MouseEvent.MOUSE_OUT,unShowToolTip)
function showToolTip(mc:MovieClip,str:String){
 
	hint_status = true
	mytext = str
}
 
function unShowToolTip(mc:MovieClip){
	hint_status = false
}
 
showToolTip(n1,'work')
unShowToolTip(n1)

Только сейчас увидела....а мувика то у меня нет в функциях((

Вот так бало на AS2, как переделать на AS3.
Код AS1/AS2:
function SH(mc:MovieClip,str:String){
	mc.onRollOver = function(){
	_root.hint_status = true
	mytext = str
 
}
 
mc.onRollOut = function(){
	_root.hint_status = false
}
}


Последний раз редактировалось юля_программист; 23.06.2014 в 13:08. Причина: ошибка, не заметила(((
Старый 23.06.2014, 13:16
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
И сразу такой вопрос. Сейчас у меня две функции, а можно ли их как то объединить в одну?
Конечно можно
Код AS3:
function controlTooltip(mc:MovieClip, str:String, showTooltip:Boolean):void { // не понятно зачем там параметр типа MovieClip, если они никак не используются
    hint_status = showTooltip;
    mytext = str;
}
 
controlTooltip(n1, null, false); // прячем
controlTooltip(n1, 'Work', true); // показываем
Не надо забывать про ; в конце строки, в некоторых случаях это очень важно.

Цитата:
Почему то при передачи фактических параметров в функцию компилятор пишет, что "обращение к несуществующему свойству n1",хотя n1 - это формальный параметр типа MovieClip.
А что выдаст trace(n1); ?
__________________
Ко мне можно и нужно обращаться на ты)

Старый 23.06.2014, 13:30
юля_программист вне форума Посмотреть профиль Отправить личное сообщение для юля_программист Найти все сообщения от юля_программист
  № 3  
Ответить с цитированием
юля_программист
 
Аватар для юля_программист

Регистрация: Oct 2012
Адрес: 59°57′ с. ш. 30°19′ в. д.
Сообщений: 49
Сама функция раньше висела на мувики и при наведение на мувик она показывалась(для каждого мувика своя подсказка)
Я что то никак не пойму как привязать все это дело к мувику?

И еще вопрос можно ли каким то образом обработать все через массив или как то по другому, чтобы не прописывать каждый мувик и подсказку, а все это делал код?


Последний раз редактировалось юля_программист; 23.06.2014 в 13:46.
Старый 23.06.2014, 13:44
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Код AS3:
mc.addEventListener(MouseEvent.MOUSE_OVER,showToolTip);
__________________
Ко мне можно и нужно обращаться на ты)

Старый 23.06.2014, 14:00
юля_программист вне форума Посмотреть профиль Отправить личное сообщение для юля_программист Найти все сообщения от юля_программист
  № 5  
Ответить с цитированием
юля_программист
 
Аватар для юля_программист

Регистрация: Oct 2012
Адрес: 59°57′ с. ш. 30°19′ в. д.
Сообщений: 49
Да но у меня вот в чем проблема, в функцию передается и сам текст подсказки,и для каждого мувика она своя,а сейчас у меня не получается сделать так чтобы определенному мувику соответствовала подсказка((

Старый 23.06.2014, 14:13
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 6  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
showToolTip и unShowToolTip, судя по коду, являются обработчиками событий мыши. Следовательно, они должны иметь единственный аргумент типа MouseEvent. Пока что наблюдается какая-то каша.

Я бы сделал как-то так.

Код AS3:
import flash.display.MovieClip;
import flash.utils.Dictionary;
import flash.events.MouseEvent;
import flash.text.TextField;
 
// это типа разные мувики
var n1:MovieClip = new MovieClip();
var n2:MovieClip = new MovieClip();
var n3:MovieClip = new MovieClip();
createDemoScene(n1, "MC1", 100);
createDemoScene(n2, "MC2", 200);
createDemoScene(n3, "MC3", 300);
 
// а это у нас словарь, в котором для каждого мувика прописана, например,
// строка для всплывающей подсказки (хотя здесь можно хранить много чего)
var toolTips:Dictionary = new Dictionary();
    toolTips[n1] = "строка подсказки для мувика 1";
    toolTips[n2] = "строка подсказки для мувика 2";
    toolTips[n3] = "строка подсказки для мувика 3";
 
// предположим, что они висят где попало, а не в одном контейнере,
// что делает наиболее удобным подписаться на мышиные события всей сцены
stage.addEventListener(MouseEvent.MOUSE_OVER, toolTip);
stage.addEventListener(MouseEvent.MOUSE_OUT, toolTip);
 
// а вот и сам обработчик
function toolTip(event:MouseEvent):void
{
    var mc:MovieClip = event.target as MovieClip;
    if (!mc || !toolTips[mc]) return;
	trace(event.type + ": " + toolTips[mc]);
}
 
// это вспомогательная функция, чтобы демосцену создать побырику
function createDemoScene(mc, title, x):void
{
	mc.graphics.beginFill(0x0055ff);
	mc.graphics.drawRect(0, 0, 75, 75);
 
	var txt:TextField = new TextField();
	    txt.text = title;
	    txt.selectable = false;
	mc.addChild(txt);
 
	mc.x = x;
	addChild(mc);
 
	mc.mouseChildren = false;
}
__________________
Поймай яблоко 2!

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

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

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


 


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


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