@@ -36,6 +36,9 @@ pxImageA::pxImageA(pxScene2d *scene) : pxObject(scene),
3636 mFrameTime = -1 ;
3737 mPlays = 0 ;
3838 mResource = pxImageManager::getImageA (" " );
39+
40+ mw = -1 ;
41+ mh = -1 ;
3942}
4043
4144pxImageA::~pxImageA ()
@@ -46,8 +49,6 @@ pxImageA::~pxImageA()
4649
4750void pxImageA::onInit ()
4851{
49- mw = static_cast <float >(mImageWidth );
50- mh = static_cast <float >(mImageHeight );
5152}
5253
5354rtError pxImageA::url (rtString &s) const
@@ -154,7 +155,7 @@ void pxImageA::draw()
154155 pxTimedOffscreenSequence &imageSequence = getImageAResource ()->getTimedOffscreenSequence ();
155156 if (imageSequence.numFrames () > 0 )
156157 {
157- context.drawImage (0 , 0 , mw, mh , mTexture , nullMaskRef, false , NULL , mStretchX , mStretchY );
158+ context.drawImage (0 , 0 , getOnscreenWidth (), getOnscreenHeight () , mTexture , nullMaskRef, false , NULL , mStretchX , mStretchY );
158159 }
159160 }
160161}
@@ -261,8 +262,6 @@ void pxImageA::loadImageSequence()
261262 pxOffscreen &o = imageSequence.getFrameBuffer (0 );
262263 mImageWidth = o.width ();
263264 mImageHeight = o.height ();
264- mw = static_cast <float >(mImageWidth );
265- mh = static_cast <float >(mImageHeight );
266265 }
267266 mReady .send (" resolve" , this );
268267 }
@@ -338,6 +337,26 @@ uint64_t pxImageA::textureMemoryUsage()
338337 return textureMemory;
339338}
340339
340+ float pxImageA::getOnscreenWidth ()
341+ {
342+ if (mw == -1 || mStretchX == pxConstantsStretch::NONE)
343+ {
344+ return static_cast <float >(mImageWidth );
345+ }
346+ else
347+ return mw;
348+
349+ }
350+ float pxImageA::getOnscreenHeight ()
351+ {
352+ if (mh == -1 || mStretchY == pxConstantsStretch::NONE)
353+ {
354+ return static_cast <float >(mImageHeight );
355+ }
356+ else
357+ return mh;
358+ }
359+
341360rtDefineObject (pxImageA, pxObject);
342361rtDefineProperty (pxImageA, url);
343362rtDefineProperty (pxImageA, resource);
0 commit comments