|
|
|||||
Какой именно??
http://www.friday13.pisem.net/ у всех прямоугольников верхняя левая точка это TextField[_x, _y] Зеленый прямоугольник - TextField.getTextFormat().getTextExtent(TextField.text)[width, height] Красный прямоугольник TextField[_width, _height] Синий прямоугольник TextField[textWidth, textHeight]
__________________
Тут вам не здесь!!! |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Цитата:
битмапа используется не для того, чтобы передать саму картинку, а чтобы определить истинные размеры |
|
|||||
ага... вроде получилось, как выложить пример для будущих поколений???
__________________
Тут вам не здесь!!! |
|
|||||
Блин.. на ChinaCyr код работает, для Dollar глючит((
в Stage нужно создать текстовое поле, обозвать z, внедрить нужные фонты, написать что нибудь в нем, конвертнуть в символ MovieClip и обозвать тоже z import flash.display.BitmapData; import flash.geom.Rectangle; import flash.geom.Matrix; import flash.geom.ColorTransform; trace(getTimer()); z.z.autoSize = "left"; var myBitmapData:BitmapData = new BitmapData(z._width * 1.3, z._height * 1.3, false, 0x00000000); var mc_1:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth()); mc_1.attachBitmap(myBitmapData, this.getNextHighestDepth()); mc_1._x = 10; mc_1._y = 10; z.autoSize = "left"; var myMatrix:Matrix = new Matrix(); myMatrix.ty = z._width * 0.15; myMatrix.ty = z._height * 0.15; myMatrix.scale(z._xscale / 100, z._yscale / 100); mc.onMouseDown = function() { var alpha:String = (myBitmapData.getPixel32(this._xmouse, this._ymouse) >> 24 & 0xFF).toString(16); trace(">> alpha: " + alpha); // ff var red:String = (myBitmapData.getPixel32(this._xmouse, this._ymouse) >> 16 & 0xFF).toString(16); trace(">> red: " + red); // aa var green:String = (myBitmapData.getPixel32(this._xmouse, this._ymouse) >> 8 & 0xFF).toString(16); trace(">> green: " + green); // cc var blue:String = (myBitmapData.getPixel32(this._xmouse, this._ymouse) & 0xFF).toString(16); trace(">> blue: " + blue); // ee trace("0x" + alpha + red + green + blue); // 0xffaaccee }; var myColorTransform:ColorTransform = new ColorTransform(0, 0, 1, 1, 0, 0, 255, 0); var blendMode:String = "normal"; var myRectangle:Rectangle = new Rectangle(0, 0, z._width * 1.3, z._height * 1.3); var smooth:Boolean = false; myBitmapData.draw(z, myMatrix, myColorTransform, blendMode, myRectangle, smooth); var colorBoundsRect:Rectangle = myBitmapData.getColorBoundsRect(0xff0000FF, 0xFF000000, false); trace(colorBoundsRect); var my = this.createEmptyMovieClip("my", this.getNextHighestDepth()); my._x = colorBoundsRect.x + 10; my._y = colorBoundsRect.y + 10; my.lineStyle(0.25, 0xffffff); my.lineTo(colorBoundsRect.width, 0); my.lineTo(colorBoundsRect.width, colorBoundsRect.height); my.lineTo(0, colorBoundsRect.height); my.lineTo(0, 0); trace(getTimer()); Всем спасибо
__________________
Тут вам не здесь!!! Последний раз редактировалось iNils; 05.07.2007 в 11:39. |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
Не надо создавать несколько сообщений подряд, надо исправить последнее в теме.
Что-то код слишком громоздкий. Мой вариант: function getSize (txt:TextField):Object { var bmp:BitmapData = new BitmapData (Math.ceil (txt._width), Math.ceil (txt._height), true, 0x00); var bmpW:BitmapData = new BitmapData (1, bmp.height, true, 0x00); var bmpH:BitmapData = new BitmapData (bmp.width, 1, true, 0x00); bmp.draw (txt); var offsetW:Number = 0; var offsetH:Number = 0; var i:Number = bmp.width; while (i > 0 && !bmp.hitTest (new Point (0, 0), 1, bmpW, new Point (i, 0), 0)) { i--; } offsetW = i; i = 0; while (i < bmp.width && !bmp.hitTest (new Point (0, 0), 1, bmpW, new Point (i, 0), 0)) { i++; } offsetW -= i - 2; //// i = bmp.height; while (i > 0 && !bmp.hitTest (new Point (0, 0), 1, bmpH, new Point (0, i), 0)) { i--; } offsetH = i; i = 0; while (i < bmp.height && !bmp.hitTest (new Point (0, 0), 1, bmpH, new Point (0, i), 0)) { i++; } offsetH -= i - 2; return {w:offsetW, h:offsetH}; } var o:Object = getSize (txt); trace (o.w + " " + o.h); |
|
|||||
А координаты текстового поля? верхнего левого пикселя?
У меня в коде много мусора Вспомогательного, я не почистил, на радостях бросил все что было в фрейме.
__________________
Тут вам не здесь!!! |
|
|||||
можно еще так попробовать
function getSize (txt:TextField):Object { var bmp:BitmapData = new BitmapData (Math.ceil (txt._width), Math.ceil (txt._height), true, 0); bmp.draw (txt); var rec:Rectangle=bmp.getColorBoundsRect(0xFF000000, 0x00000000,false); return {w:rec.width, h:rec.height}; } Последний раз редактировалось silin; 05.07.2007 в 12:09. |
|
|||||
Цитата:
__________________
Тут вам не здесь!!! |
Часовой пояс GMT +4, время: 19:59. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|