Нахождение (загруженного) размера изображения в AS3 (Сценарий 3.0 Действия)

В MainActivity.java добавьте следующий код

public class MainActivity extends AppCompatActivity {
public static MainActivity context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;
    }
    public static MainActivity getInstance()
    {
        return context;
    }

}

, используйте этот контекст, вызывая этот метод

 @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.contains("compass")){
            sensorManager.registerListener(MainActivity.getInstance(), compass, SensorManager.SENSOR_DELAY_NORMAL);
        }
    }
5
задан 23 December 2008 в 13:29
поделиться

3 ответа

Вы не можете знать ширину битового массива, пока это на самом деле не загружается:

function LoadImage(q)
{
    var imageLoader:Loader = new Loader();
    var image:URLRequest = new URLRequest("GalleryImages/Album1/"+q+".jpg");
    imageLoader.contentLoader.addEventListener(Event.COMPLETE, ImageLoaded);
    imageLoader.load(image);
    addChild (imageLoader);
    ...


private function ImageLoaded(e:Event):void
{
    var imageLoader:Loader = Loader(e.target.loader);
    var bm:Bitmap = Bitmap(imageLoader.content);
    var CurrentXLength = bm.width;
    ....

Alternativly эта ссылка мог бы быть полезным? Не попробовали его самостоятельно...

12
ответ дан 18 December 2019 в 12:02
поделиться

Для доступа к ширине, необходимо сделать это в функции, присвоенной для обработки События. ЗАВЕРШЕННЫЙ.

"Вы захотите массив, содержащий объекты, которые Вы хотите загрузить. Необходимо, вероятно, загрузить эти данные в XML, таким образом, это динамично и масштабируемо. Однажды данные XML загружается, это должно быть присвоено массиву любым способом, который Вы любите. Причина, что мы должны использовать массив в этой ситуации, скорее затем просто с помощью объекта XML, который является по существу массивом, состоит в том, потому что Вам нужно знание ширины объектов так, чтобы можно было основывать следующие объекты X положений прочь последних объектов X положений плюс его ШИРИНА.

С XML распространено использовать для цикла и просто выполнить итерации через "x" сумму времен. Мы не хотим это в этом случае. Для получения свойства "WIDTH" загруженного актива к этому нужно получить доступ из функции, присвоенной для увольнения, когда загрузчик запускает Событие. ЗАВЕРШЕННЫЙ. После того как изображение завершилось, оно удалит объект из массива, установит переменную относительно lastX и lastWidth, и затем получит следующий объект в массиве и запустится на всем протяжении. В конечном счете массив пуст, и процесс завершен.

Примечание: Я пропущу загрузку XML и просто введу данные в массив сам.

package
{
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.net.URLRequest;

    public class DocumentClass extends Sprite
    {
        private var _array:Array;
        private var _lastX:Number;
        private var _lastWidth:Number;

        public function DocumentClass():void
        {
            _array = new Array();
            //Add Items to an array however you wish.  I did it
            //this way to make it easier to read on this site.

            _array.push({name: "image1", path: "path/to/image1"});
            _array.push({name: "image2", path: "path/to/image2"});
            _array.push({name: "image3", path: "path/to/image3"});

            loadImage();
        }
        private function loadImage():void
        {
            if(_array.length > 0)
            {
                var loader:Loader = new Loader();
                addChild(loader);

                var request:URLRequest = new URLRequest(_array[0].path); //Loads first item in the array each time.
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
                loader.x = _lastX + _lastWidth;
                laoder.load(request);

                _lastX = loader.x; //We set after so we are ready for the next.

                _array.shift(); //Remove the first item from the array.
            }
        }
        function onImageLoaded(e:Event):void
        {
            _lastWidth = e.target.width;
            loadImage(); //Attempt to load another image if the array isn't empty.
        }
    }
}

Я надеюсь, что это помогает, код не тестируется, но понятие кажется допустимым.

1
ответ дан 18 December 2019 в 12:02
поделиться

Yeah I used scott's answer but it's worth noting that 'imageLoader.contentLoader' should be 'imageLoader.contentLoaderInfo' in the LoadImage() function. Solved the width prob for me-- thanks mang

0
ответ дан 18 December 2019 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: