![]() |
|
||||||||||
|
|||||
|
Какой именно??
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,883
Записей в блоге: 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,883
Записей в блоге: 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, время: 14:42. |
|
|
« Предыдущая тема | Следующая тема » |
|
|