|
|
|||||
Регистрация: Mar 2011
Сообщений: 35
|
Неадекватная область содержимого
Привет.
Заранее извиняюсь, если вопрос будет нубским. Курил мануалы и гугл, но не нашёл ничего, что бы мне помогло. Создаю экземпляр спрайта. Очищаю. Рисую. Ловлю событие мыши. Итоговый размер спрайта получается гораздо больше, чем его визуальная часть. Это видно, если сделать его фон непрозрачным, ну и мышь, соответсно, ловится этой "лишней" областью. Пруф: [IMG]http://plasmon.**********/4987754.image[/IMG] Вот ключевой код: // это в конструкторе m_CaptionContainer = new Sprite(); f_Redraw_Caption(); ... m_CaptionContainer.addEventListener(MouseEvent.MOUSE_MOVE, f_MouseOverCaption); ... protected function f_Redraw_Caption() { m_CaptionEntity.x = m_CaptionEntity.y = m_Margin - 2; var w:Number = 2 * m_Margin + m_CaptionEntity.textWidth; var h:Number = 2 * m_Margin + m_CaptionEntity.textHeight; m_CaptionContainer.graphics.clear(); m_CaptionContainer.graphics.lineStyle(1, 0xFFFFFF); m_CaptionContainer.graphics.beginFill(0xFFFFFF, 0.35); m_CaptionContainer.graphics.drawRect(0, 0, w, h); m_CaptionContainer.graphics.endFill(); m_CaptionContainer.opaqueBackground = 0xFF0000; // для дебага } ... // для дебага protected function f_MouseOverCaption(event:MouseEvent) { Popup.instance.text = String(event.target) + "\n" + m_CaptionContainer.width + " * " + m_CaptionContainer.height; Popup.instance.x = x + width; Popup.instance.y = event.stageY; } За стилистику не пинайте, я всего три дня в AS3, а душу уже продал С++. |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
А почему показан лишь кусок кода?
По нему ничего толком сказать нельзя. Но спрайт сам по себе не может быть больше, чем положено. Его размер, определяется размерами содержимого. Здесь видно текст филд внутри спрайта, от так же влияет на его размеры. Скорее всего по умолчанию этот текстфилд слишком высокий (я имею в виду не высоту текста, а высоту самого текстового поля), поэтому и спрайт тянется до ненужных размеров. Это можно проверить назачив текстфилду значения border и borderColor. Сам много раз наступал на эти грабли, причем даже несколько минут назад ) Последний раз редактировалось goodguy; 29.03.2011 в 22:39. |
|
|||||
Я подозреваю, что где-то в коде у вас присутствует строчка
Если я прав, то ситуацию можно объяснить тем, что текстовое поле имеет размеры по-умолчанию 100x100. Добавлено через 3 минуты Отключить реакцию на мышь у текстового поля можно установив свойство mouseEnabled в false. |
|
|||||
а сократить размеры текстового поля до тех которые реально занимает текст можно:
Добавлено через 1 минуту вообще, подробнее здесь: http://help.adobe.com/ru_RU/AS3LCR/F....html#autoSize |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
Если задержитесь в AS - озаботьтесь вниканием в принятые конвенции. Полезно будет.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 30.03.2011 в 00:45. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
хм, а в плюсах суффиксом рекоммендуют подчеркивание в приватах писать..
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Mar 2011
Сообщений: 35
|
Всё правильно, текстфилд я добавил чайлдом, а про его размеры забыл. Вот он и палится: 100 свой размер, + 8 отступ от угла. Как его укращать, я уже в курсе.
Странно, что Adobe сделали такой конкретный размер по-умолчанию и вырубили автосайз. Имхо, здравый смысл подсказывает, что по-умолчанию должен быть только автосайз. Спасибо всем большое. :3 bav, я использую mouseChildren. Тем не менее, сообщение дошло до контейнера, иначе бы я не узнал о деффекте. Оффтоп на счёт стилистики. Во-первых, поля с m_ и так непубличные. Во-вторых, в некоторых конторах (Microsoft, Valve) есть мода использовать m_ для для любого "member". Такой стиль оченнь понравился. В какой-то ветке писали, что современные IDE с их плюшками должны избавить от проблем определения типа на глаз. Да вот, я вам скажу, что это нифига не работает, потому что среди месива из всех 100500 определений разобраться отнюдь не легко. А тут я ставлю m_, зову автодополнение, и сразу вижу список всех свойств / переменных. Ставлю f_, и вижу список непубличных функций. И ещё меня коробит писать первое слово в составном имени с нижнего регистра. fish_r, мы попадём в ад только если наш код будет глючным и непонятным, или сломает кому-то мозг при рефакторинге. Стилистика не причём.) |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
ShadowsInRain, вместо m_ давно уже пользуют this.
|
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
почему же тут коробит, а тут не коробит... Я не против собственных конвенций, просто проблема в том, что конвенция должна быть одна. А тут идёт смесь своей конвенции и конвенции базовых классов, а если вы ещё какую либу подключите (тоже со своим уставом)? Просто я когда вижу такой код - заставляю переписывать ибо: Цитата:
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 30.03.2011 в 19:07. |
Часовой пояс GMT +4, время: 03:45. |
|
« Предыдущая тема | Следующая тема » |
Теги |
AS3 , graphics , Sprite , баг , содержимое |
Опции темы | |
Опции просмотра | |
|
|